[código] GUIs en Java – Eventos de Mouse y Teclado
(anterior) En esta sección se presentan varios de los componentes de Java para la creación de interfaces gráficas de usuario. Los componentes de Swing pueden personalizarse para asemejarse a la apariencia de la plataforma computacional en la que se ejecute el programa, o pueden usar la apariencia visual de Java para brindar una interfaz idéntica en cualquier Sistema Operativo. Esta sección se centra en el manejo de eventos de Mouse y de Teclado.
Demostración de los eventos de Ratón (MouseListener)

// Demostración de los eventos de ratón.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RastreadorRaton extends JFrame implements MouseListener, MouseMotionListener
{
private JLabel barraEstado;
// configurar GUI y registrar manejadores de eventos de ratón
public RastreadorRaton()
{
super( "Demostración de los eventos de ratón" );
barraEstado = new JLabel();
getContentPane().add( barraEstado, BorderLayout.SOUTH);
getContentPane().addMouseListener( this ); // escucha sus propios eventos de ratón
getContentPane().addMouseMotionListener( this ); // y de movimiento de ratón
setSize( 300, 125 );
setVisible( true );
}
// Manejadores de eventos de MouseListener
// manejar el evento cuando el botón del ratón se suelta inmediatamente después de oprimir
public void mouseClicked( MouseEvent evento )
{
barraEstado.setText( "Se hizo clic en [" + evento.getX() +
", " + evento.getY() + "]" );
}
// manejar evento cuando se oprime el botón del ratón
public void mousePressed( MouseEvent evento )
{
barraEstado.setText( "Se oprimió en [" + evento.getX() +
", " + evento.getY() + "]" );
}
// manejar evento cuando se suelta el ratón después de arrastrar
public void mouseReleased( MouseEvent evento )
{
barraEstado.setText( "Se soltó en [" + evento.getX() +
", " + evento.getY() + "]" );
}
// manejar el evento cuando el ratón entra al área
public void mouseEntered( MouseEvent evento )
{
barraEstado.setText( "Ratón entro en [" + evento.getX() +
", " + evento.getY() + "]" );
getContentPane().setBackground( Color.GREEN );
}
// manejar evento cuando el ratón sale del área
public void mouseExited( MouseEvent evento )
{
barraEstado.setText( "Ratón fuera de la ventana" );
getContentPane().setBackground( Color.WHITE );
}
// Manejadores de eventos de MouseMotionListener
// manejar el evento cuando el usuario arrastra el ratón con el botón oprimido
public void mouseDragged( MouseEvent evento )
{
barraEstado.setText( "Se arrastró en [" + evento.getX() +
", " + evento.getY() + "]" );
}
// manejar el evento cuando el usuario mueve el ratón
public void mouseMoved( MouseEvent evento )
{
barraEstado.setText( "Se movió en [" + evento.getX() +
", " + evento.getY() + "]" );
}
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
RastreadorRaton aplicacion = new RastreadorRaton();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase RastreadorRaton
Uso de la clase MouseMotionAdapter

// Uso de la clase MouseMotionAdapter.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Pintor extends JFrame {
private int cuentaPuntos = 0;
private JLabel j=new JLabel("Van: "+cuentaPuntos+" puntos");
// arreglo de 1000 referencias a java.awt.Point
private Point puntos[] = new Point[ 2000 ];
// configurar GUI y registrar manejador de eventos de ratón
public Pintor()
{
super( "Un programa simple de dibujo" );
// crear una etiqueta y colocarla en la parte SOUTH del esquema BorderLayout
getContentPane().add( new JLabel( "Arrastre el ratón para dibujar" ),
BorderLayout.SOUTH );
getContentPane().add( j,BorderLayout.NORTH );
addMouseMotionListener(
new MouseMotionAdapter() { // clase interna anónima
// almacenar coordenadas de arrastre y llamar a repaint
public void mouseDragged( MouseEvent evento )
{
if ( cuentaPuntos < puntos.length ) {
puntos[ cuentaPuntos ] = evento.getPoint();
++cuentaPuntos;
repaint();
j.setText("Van: "+cuentaPuntos+" puntos, le quedan: "+(2000-cuentaPuntos)+"puntos");
}
}
} // fin de la clase interna anónima
); // fin de la llamada a addMouseMotionListener
setSize( 400, 200 );
setVisible( true );
} // fin del constructor de Pintor
// dibujar óvalo en un cuadro delimitador de 4 por 4 en ubicación especificada en ventana
public void paint( Graphics g )
{
super.paint( g ); // borra el área de dibujo
for ( int i = 0; i < puntos.length && puntos[ i ] != null; i++ )
g.fillOval( puntos[ i ].x, puntos[ i ].y, 4, 4 );
}
public static void main( String args[] )
{
Pintor aplicacion = new Pintor();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase Pintor
Demostración de los clics de ratón y cómo diferenciar entre los botones del ratón (MouseAdapter)

// Demostración de los clics de ratón y cómo diferenciar entre los botones del ratón.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DetallesRaton extends JFrame
{
private int xPos, yPos;
// establecer cadena barra título; registrar escucha ratón; ajustar tamaño y mostrar ventana
public DetallesRaton()
{
super( "Clics y botones del ratón" );
getContentPane().addMouseListener( new ManejadorClicsRaton() );
setSize( 350, 150 );
setVisible( true );
}
// dibujar objeto String en la ubicación donde se hizo clic con el ratón
public void paint( Graphics g )
{
// llamar al método paint de la superclase
super.paint( g );
g.drawString( "Se hizo clic en: [" + xPos + ", " + yPos + "]",
xPos, yPos );
}
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DetallesRaton aplicacion = new DetallesRaton();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
// clase interna para manejar eventos de ratón
private class ManejadorClicsRaton extends MouseAdapter {
// manejar evento de clic del ratón y determinar cuál botón se oprimió
public void mouseClicked(MouseEvent evento)
{
xPos = evento.getX();
yPos = evento.getY();
String titulo = "Se hizo clic " + evento.getClickCount() + " Veces";
if ( evento.isMetaDown() ) // botón derecho del ratón
titulo += " con el botón derecho del ratón";
else if ( evento.isAltDown() ) // botón de en medio del ratón
titulo += " con el botón central del ratón";
else // botón izquierdo del ratón
titulo += " con el botón izquierdo del ratón";
setTitle( titulo ); // establecer barra de título de la ventana
repaint();
} // fin del método mouseClicked
} // fin de la clase interna privada ManejadorClicsRaton
} // fin de la clase DetallesRaton
Demostración de los eventos de teclado (KeyListener)

// Demostración de los eventos de pulsación de tecla.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DemoTeclas extends JFrame implements KeyListener {
private String linea1 = "", linea2 = "", linea3 = "";
private JTextArea areaTexto;
// configurar GUI
public DemoTeclas()
{
super( "Demostración de eventos de pulsación de tecla" );
// establecer objeto JTextArea
areaTexto = new JTextArea( 10, 15 );
areaTexto.setText( "Oprima cualquier tecla en el teclado..." );
areaTexto.setEnabled( false );
areaTexto.setDisabledTextColor( Color.blue );
getContentPane().add( areaTexto );
addKeyListener( this ); // permitir al marco procesar eventos de teclas
setSize( 350, 100 );
setVisible( true );
} // fin del constructor de DemoTeclas
// manejar evento de pulsación de cualquier tecla
public void keyPressed( KeyEvent evento )
{
linea1 = "Se oprimió tecla: " + evento.getKeyText( evento.getKeyCode() );
establecerLineas2y3( evento );
}
// manejar evento de liberación de cualquier tecla
public void keyReleased( KeyEvent evento )
{
linea1 = "Se soltó tecla: " + evento.getKeyText( evento.getKeyCode() );
establecerLineas2y3( evento );
}
// manejar evento de pulsación de una tecla de acción
public void keyTyped( KeyEvent evento )
{
linea1 = "Se escribió tecla: " + evento.getKeyChar();
establecerLineas2y3( evento );
}
// establecer segunda y tercera líneas de salida
private void establecerLineas2y3( KeyEvent evento )
{
linea2 = "Esta tecla " + ( evento.isActionKey() ? "" : "no " ) +
"es una tecla de acción";
String temp = evento.getKeyModifiersText( evento.getModifiers() );
linea3 = "Teclas modificadoras oprimidas: " +
( temp.equals( "" ) ? "ninguna" : temp );
areaTexto.setText( linea1 + "\n" + linea2 + "\n" + linea3 + "\n" );
}
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DemoTeclas aplicacion = new DemoTeclas();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DemoTeclas
Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.
37 Comentarios | deja el tuyo





como seria pasar el mouse sobre un eitquta q q en un cuadro de texto aparesca el nombre de la eiqueta
Para eso usas el metodo setTooltipText.
ESTOS CODIGOS SON MUY BUENOS YA QUE PERMITE ADQUIRIR CONOCIMIENTOS SOBRE COMO TRABAJAR CON EL MOUSE, YA QUE LO MAS IMPORTANTE ES ENTENDER EL FUNCIONAMIENTO Y QUE ESTRUCTURA TIENE EL USO DEL MOUSE.
disculpa, como seria si quiero que al momento de implementar un actionlistener, por ejemplo tengo mi menu linea, cuando le doy clic tengo que dar el punto inicial y final mediante el mouse, me podrias ayudar? gracias