Ver Mensaje Individual
  #8 (permalink)  
Antiguo 03/03/2011, 20:02
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Evento de teclado en Panel

Hola,

Y en otro caso, suponiendo que la clase fuera privada y el método privado del JFrame,

Código Java:
Ver original
  1. package application;
  2.  
  3. import java.awt.event.MouseEvent;
  4. import java.awt.event.MouseListener;
  5.  
  6. public class JFrame extends javax.swing.JFrame {
  7.  
  8.     private EventosBotonesListadoPersona delegate;
  9.     private java.awt.KeyEventDispatcher dispatcher;
  10.  
  11.     private javax.swing.JButton jButton1;
  12.  
  13.     public JFrame() {
  14.         jButton1 = new javax.swing.JButton();
  15.         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
  16.         getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));
  17.         jButton1.setText("Actualizar");
  18.         getContentPane().add(jButton1);
  19.         pack();
  20.  
  21.         delegate =  new EventosBotonesListadoPersona();
  22.         dispatcher = new java.awt.KeyEventDispatcher() {
  23.             @Override
  24.             public boolean dispatchKeyEvent(java.awt.event.KeyEvent e) {
  25.                 if (e.getID() == java.awt.event.KeyEvent.KEY_RELEASED &&
  26.                         e.getKeyCode() == java.awt.event.KeyEvent.VK_F5) {
  27.                     delegate.mouseClicked(
  28.                             new java.awt.event.MouseEvent(jButton1,
  29.                             java.awt.event.MouseEvent.NOBUTTON,
  30.                             new java.util.Date().getTime(), 0, 0, 0, 1, false));
  31.                 }
  32.                 return false;
  33.             }
  34.         };
  35.         java.awt.KeyboardFocusManager.
  36.                 getCurrentKeyboardFocusManager().
  37.                 addKeyEventDispatcher(dispatcher);
  38.         jButton1.addMouseListener(delegate);
  39.     }
  40.  
  41.     @Override
  42.     public void dispose() {
  43.         java.awt.KeyboardFocusManager.
  44.                 getCurrentKeyboardFocusManager().
  45.                 removeKeyEventDispatcher(dispatcher);
  46.         super.dispose();
  47.     }
  48.  
  49.     private void verActualizarPersona() {
  50.         System.out.println("Abrir dialogo ...");
  51.     }
  52.  
  53.     private class EventosBotonesListadoPersona implements MouseListener {
  54.  
  55.         @Override
  56.         public void mouseClicked(MouseEvent e) {
  57.             verActualizarPersona();
  58.         }
  59.  
  60.         @Override
  61.         public void mousePressed(MouseEvent e) {
  62.         }
  63.  
  64.         @Override
  65.         public void mouseReleased(MouseEvent e) {
  66.         }
  67.  
  68.         @Override
  69.         public void mouseEntered(MouseEvent e) {
  70.         }
  71.  
  72.         @Override
  73.         public void mouseExited(MouseEvent e) {
  74.         }
  75.     }
  76.  
  77. }

Realmente no miro cual es el problema según la descripción que diste. Al presionar la tecla F5, en cualquier lugar de toda la aplicación, se llama al método verActualizarPersona.

Y si lo quieres simplificar más, cambia esta parte del código:

Código Java:
Ver original
  1. public boolean dispatchKeyEvent(java.awt.event.KeyEvent e) {
  2.                 if (e.getID() == java.awt.event.KeyEvent.KEY_RELEASED &&
  3.                         e.getKeyCode() == java.awt.event.KeyEvent.VK_F5) {
  4.                     verActualizarPersona(); // Llamada al método directamente.
  5.                 }
  6.                 return false;
  7.             }
  8.         };
Saludos,