Anda di halaman 1dari 6

Mostrar una imagen en una ventana 1.

Crear un nuevo proyecto llamado ManejoEventos

2. Establecer como nombre de proyecto ManejoEventos

3. Crear una nueva clase llamada Main en el paquete poo.eventos y que herede de JFrame a. Crear un mtodo main con lo siguiente
public static void main(String[] args) { JFrame ventana = new JFrame(); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ventana.setSize(500, 500); ventana.setVisible(true); }

4. Crear una nueva clase llamada MiImagen en el paquete poo.eventos y que herede de JPanel

a. Agregar a la clase 3 atributos: private int oldX, oldY; private Image imagen;

b. Crear mtodos set y get para oldX y oldY (use el IDE) c. Crear mtodo get para imagen (use el IDE) d. Crear un mtodo constructor sin parmetros i. Cargue una imagen desde un archivo e inicialice el atributo imagen con ella, para esto agrguela en el mismo directorio de las clases ii. Establezca el tamao del panel usando setSize (recuerde que la clase MiImagen hereda de JPanel por lo tanto es un panel una regin rectangular) public MiImagen() { if ((getClass().getResource("satelite.jpg")) != null) { imagen = new ImageIcon(getClass().getResource("satelite.jpg")).getImage(); setSize(imagen.getHeight(null), imagen.getHeight(null)); } } e. Sobre escriba el mtodo paintComponent con el siguiente cdigo @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(imagen, 0, 0, imagen.getHeight(null), imagen.getHeight(null), null); }

Nota: Recuerde que un panel es un elemento grfico y todos los elementos grficos tienen eventos que hacen el renderizado del mismo 5. Modifique el mtodo main de la clase Main para agregar un panel de tipo MiImagen a la ventana
public static void main(String[] args) { JFrame ventana = new JFrame(); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ventana.setSize(500, 500); ventana.setVisible(true); MiImagen imagen = new MiImagen(); ventana.add(imagen); }

6. Ejecute la aplicacin

Implementar arrastrar y soltar un objeto en la pantalla Para la implementacin del drag and drop vamos a utilizar las clases MouseAdapter y MouseMotionAdapter 7. Agregar una nueva clase llamada MiMouseAdapter la misma que manejar el evento de dar un clic y mantener presionado el botn del mouse sobre el panel (MiImagen)

a. Hacer que la clase herede de MouseAdapter b. Sobreescribir el mtodo mousePressed c. Capturar a partir del ObjectEvent el componente (MiImagen) sobre el cual se realiz el evento y actulizar los atributos oldX y oldY
public class MiMouseAdapter extends MouseAdapter { public void mousePressed(MouseEvent e) { MiImagen imagen = (MiImagen) e.getSource(); imagen.setOldX(e.getX()); imagen.setOldY(e.getY()); } }

8. Agregar una nueva clase llamada MiMouseMotionAdapter la misma que manejar el evento que se genera cuando el mouse est arrastrando un objet, en este caso un panel (MiImagen)

a. Hacer que la clase herede de MouseMotionAdapter b. Sobreescribir el mtodo mouseDragged c. Capturar a partir del ObjectEvent el componente (MiImagen) sobre el cual se realiz el evento y actualizar la posicin en la que est siendo dibujado
class MiMouseMotionAdapter extends MouseMotionAdapter { public void mouseDragged(MouseEvent e) { MiImagen img = (MiImagen) e.getSource(); Graphics g = img.getGraphics(); img.setLocation(img.getX() + e.getX() - img.getOldX(), img.getY() + e.getY() - img.getOldY()); g.drawImage(img.getImagen(), e.getX(), e.getY(), img.getImagen().getHeight(null), img.getImagen().getHeight(null), null); g.dispose(); } }

9. Modificar el constructor de la clase MiImagen y agregar los listener para Mouse y MouseMotion
public MiImagen() { if ((getClass().getResource("satelite.jpg")) != null) { imagen = new ImageIcon(getClass().getResource("satelite.jpg")).getImage(); setSize(imagen.getHeight(null), imagen.getHeight(null)); } addMouseListener(new MiMouseAdapter()); addMouseMotionListener(new MiMouseMotionAdapter()); }

10. Ejecute la aplicacin

Anda mungkin juga menyukai