Seguidores

MIS WEBS



Mostrando entradas con la etiqueta IMAGEN. Mostrar todas las entradas
Mostrando entradas con la etiqueta IMAGEN. Mostrar todas las entradas

martes, 16 de enero de 2018

CUADROS DE TEXTO E IMÁGENES EN UN MARCO DE JAVA





Un de las cosas que nos hace falta en un formulario es una cuadro de texto, esto lo conseguimos en java con la clase JTextField.



En primer lugar tenemos que declarar dos variables de tipo JTextField dentro de nuestra lámina:


class A_lamina extends JPanel{
             public void paintComponent(Graphics g){//constructor       
                    super.paintComponent(g);
             }
JTextField cuadro1,cuadro2;
}

Ahora generamos dos objetos de la clase JTextFiled y lo añadiremos con add.

class A_lamina extends JPanel{
             public void paintComponent(Graphics g){//constructor       
                    super.paintComponent(g);
                   
                   
                    setBackground(Color.DARK_GRAY);
                    setLayout(null); //establecer diseño por defecto no
                    cuadro1=new JTextField();
                    cuadro2=new JTextField();
                    cuadro1.setBounds(100,50,150,20);
                    cuadro2.setBounds(100,90,150,20);
                    add(cuadro1);
                    add(cuadro2);
             }
JTextField cuadro1,cuadro2;
}

En mi caso he decido añadirle una foto de fondo utilizado la clase Image.

class A_lamina extends JPanel{
             public void paintComponent(Graphics g){//constructor
                    super.paintComponent(g);
                    try { //tratamineto de excepciones, haz esto y si no catch
          foto = ImageIO.read(new File("C:\\ruta\\ruta\\ruta\\imagenes\\JAVA2.jpg"));
                           } catch(IOException e) {
                           JOptionPane.showConfirmDialog(null, "no esta la foto");
                           }
                           //escribimos la foto en nuestra lamina
                           g.drawImage(foto, 0, 0, null);
                    setBackground(Color.DARK_GRAY);
                    setLayout(null); //establecer diseño por defecto no
                    cuadro1=new JTextField();
                    cuadro2=new JTextField();
                    cuadro1.setBounds(100,50,150,20);
                    cuadro2.setBounds(100,90,150,20);
                    add(cuadro1);
                    add(cuadro2);
                    cuadro1.addFocusListener(new escucha());

             }


sábado, 6 de enero de 2018

HACER UN MOSAICO DENTRO DE UNA LAMINA DE UN MARCO EN JAVA



En ocasiones desearíamos realizar un mosaico con una foto dentro de una lámina de un frame, en el siguiente ejercicio, utilizaremos los métodos getHeight (obten Altura)  y  getWidth (obten Ancho) para preguntar a nuestro ordenador el tamaño de la foto seleccionada, los guardaremos en dos variables que mas  tarde poder utilizarlas en otro método copyArea() al que le pasaremos por parámetros las variables que hemos obtenido con el alto y el ancho de nuestra foto.

Utilizaremos un for anidado para ir copiando hasta que no quepan mas fotos en nuestro marco.

Recordaremos los parámetros del copyAea():





Cuando posicionemos la primera vez nuestra foto con drawImage() le diremos que X=0 e Y =0, para que la coloque en el borde superior de nuestro panel.


Y con el for anidado la iremos clonando por toda la lamina


for (int i=0;i<pondremos el alto de nuestra lamina;i++) {
for (int j=0;j<pondremos el ancho de nuestra lamina;;j++) {
g.copyArea(0, 0, AnchoFoto, AltoFoto, AnchoFoto*i, AltoFoto*j);
}
}
}




Veamos al completo:

import java.awt.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

public class practica5_frame {

public static void main(String[] args) {
Marco6 marco = new Marco6();
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
marco.setVisible(true);
}
}

class Marco6  extends JFrame{
public Marco6() {
setTitle ("marco con dibujos");
setBounds(400,200,700,400); 
Lamina6 lamina = new Lamina6();
add(lamina);
}
}

class Lamina6 extends JPanel{
public void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.GRAY);
File ruta = new File("images2.jpg");
try { //tratamineto de excepciones, haz esto y si no catch
foto = ImageIO.read(ruta); 
catch(IOException e) { 
JOptionPane.showConfirmDialog(null, "no esta la foto");
}
/*creamos dos var y le solicitamos al ordenador que nos diga getheight obten alto Foto y ancho, el parametro this indica que deseamos obtener el de nuestra foto actual*/
int AltoFoto =foto.getHeight(this);
int AnchoFoto= foto.getWidth(this);
//escribimos la foto en nuestra lamina
g.drawImage(foto, 0, 0, null); 
//bucle for anidado en el que vamos pegando la foto tatas veces como sea necesario has completar nuestro panel
for (int i=0;i<400;i++) {
for (int j=0;j<700;j++) {
g.copyArea(0, 0, AnchoFoto, AltoFoto, AnchoFoto*i, AltoFoto*j);
}
}
}
private Image foto;
}

Buscar este blog

Sandisk y Western Digital