[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








Casidiablo dice:
Abril 2nd, 2008 a las 11:09 am
Dudas acerca de Java, en el foro de elhacker.net.
Gracias!
Javihm77 dice:
Abril 7th, 2008 a las 7:34 pm
Muy buen post, me sirvió mucho…
eduardo dice:
Mayo 19th, 2008 a las 5:46 pm
Excelente, muchÃsimas gracias.
alexander dice:
Junio 3rd, 2008 a las 9:28 am
buen articulo me fue de gran utilidad
yasmani Criales Bernal dice:
Junio 8th, 2008 a las 9:36 am
hola me parecio muy interesante tu guia de estudio ya que soy un estudiante que recien esta aprendiendo a programar en java y en verdad estoy aprediendo de esta guia espero que me mandes nuevas guias para que puedes seguir aprendiendo chauuuuuuuuu y gracias por todo…..
MAO dice:
Junio 11th, 2008 a las 11:31 pm
El aporte es excelente!!! muchas gracias por compartir el codigo para mi es de gran ayuda, es mucho mas facil aprender las cosas cuando las vez funcionando… MUCHAS GRACIAS
Mike dice:
Noviembre 4th, 2008 a las 6:55 pm
Exelente aporte, muy agradecido