Ejercicio de interfaces gráficas de usuario (V)

Otro ejercicio más. ¡Adelante!

Ejercicio

Escribe una aplicación gráfica con una ventana que tenga un botón y un área de texto. La aplicación debe reflejar en el área de texto los principales eventos de ratón que se produzcan sobre dicha área por las interacciones del usuario. Haciendo clic en el botón se limpiará el contenido del área de texto.

Como puede hacerse

Primero se construye la ventana principal de la aplicación que contiene un panel en el que se incluyen el botón y el área de texto.

Para poder reflejar algunos de los eventos del ratón se crea una clase oyente de ratón que implemente la interfaz MouseInputListener. Esta interfaz incluye siete métodos y para no tener que implementarlos todos se hace que la clase oyente extienda de la clase adaptadora MouseInputAdapter. Esta clase adaptadora proporciona definiciones vacías de los siete métodos de modo que sólo necesita implementar los métodos que resulten interesantes.

Solución

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.event.MouseInputAdapter;

public class EjemploVentanaAdaptador extends JFrame {

private JTextArea areaTexto;

public EjemploVentanaAdaptador() {
JButton boton = new JButton(“limpiar”);
areaTexto = new JTextArea(15, 60);
JPanel panel = new JPanel();
panel.add(boton);
panel.add(areaTexto);
add(panel);
// SE CREA UN OYENTE RATON QUE SE ASOCIA AL AREA DE TEXTO
ActionListener oyenteBoton = new OyenteAccion();
boton.addActionListener(oyenteBoton);
MouseListener oyenteRaton = new OyenteRaton();
areaTexto.addMouseListener(oyenteRaton);

}

class OyenteRaton extends MouseInputAdapter {
@Override
public void mouseClicked(MouseEvent e) {
areaTexto.append(“Has hecho clic en \n”);
areaTexto.append(“Posicion X: ” + e.getX());
areaTexto.append(“Posicion Y: ” + e.getY());

}

@Override
public void mousePressed(MouseEvent e) {
// SE TRATA DE UNA OPERACION CON BITS. SI OS PARECE RARO, MIRAD LA
// DOCUMENTACIÓN
if (((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0)) {
areaTexto.append(“Pulsado el botón derecho”);
}

areaTexto.append(“Se ha pulsado el botón del ratón”);
}

@Override
public void mouseReleased(MouseEvent e) {
areaTexto.append(“Se ha soltado el botón del ratón”);
}

@Override
public void mouseEntered(MouseEvent e) {
areaTexto.append(“El ratón ha entrado en el componente”);
}

@Override
public void mouseExited(MouseEvent e) {
areaTexto.append(“El ratón ha salido del componente”);
}
}

// OYENTE DE ACCIONES QUE LIMPIA EL CONTENIDO DEL TEXTO
class OyenteAccion implements ActionListener {

@Override
public void actionPerformed(ActionEvent e) {
areaTexto.setText(“”);

}

}

 

public static void main(String[] args) {
EjemploVentanaAdaptador ventana = new EjemploVentanaAdaptador();
ventana.setTitle(“Todos los eventos del ratón”);
ventana.pack();
ventana.setVisible(true);

}

}

NOTA: En este caso se están tratando los eventos de ratón a bajo nivel. 

Y os tiene que salir algo parecido a:

ejercicio swing 5

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s