Foros del Web » Programación para mayores de 30 ;) » Java »

Teclas acceso rápido

Estas en el tema de Teclas acceso rápido en el foro de Java en Foros del Web. Hola a todos. Estoy terminando un programa, el mismo esta compuesto de un JFrame principal y varios JInternalFrame (la mayoría comineen a su bes sus ...
  #1 (permalink)  
Antiguo 30/09/2012, 18:30
 
Fecha de Ingreso: septiembre-2009
Mensajes: 24
Antigüedad: 14 años, 7 meses
Puntos: 0
Teclas acceso rápido

Hola a todos.
Estoy terminando un programa, el mismo esta compuesto de un JFrame principal y varios JInternalFrame (la mayoría comineen a su bes sus propias JInternalFrame).
Lo que yo deseaba era facilitar su uso con la implementación de teclas de acceso rápido
Y e encontrado que esto es muy difícil debido a el Focus es decir que el que tiene el Focus es el que escucha lo evento de mi teclado (al menos fue lo que yo entendi) lo ultimo que logre es escuchar los eventos dentro de un jPanel Pero debido a que yo utiliso JInternalFrame no me sirve además por lo que estuve leyendo se complica un poco al tener panel dentro de panel y mi en mi caso esto se da mucho.
Lo que se me avía ocurrido era colocar un JMenuBar y ocultarlo pero tampoco me resulto.
Por lo que se me acabaron las ideas.
Alguien me puede orientar gracias
  #2 (permalink)  
Antiguo 01/10/2012, 09:58
Avatar de Lalounam  
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 11 años, 11 meses
Puntos: 19
Respuesta: Teclas acceso rápido

Normalmente el manejo de eventos es muy complicado cuando de varios componentes unos sobre otros se trata (como panel). Quizá sería una configuración horrorosa utilizar eventos en un panel y a su vez otro parecido en su contenedor, lo que yo haría sería manejar un evento universal de lectura de key para todos los componentes, es decir, todos tendrían un keyUpEvent o algo así y ese evento llamaría a un método encargado de resolver dicho evento, recibiendo como parámetros la tecla presionada y el componente onFocus.

¿Cómo te suena esto? si no es posible quizá podrías hablarnos más del sistema para poder ver las complicaciones que se podrían presentar con las soluciones que puedan surgir.
  #3 (permalink)  
Antiguo 01/10/2012, 13:24
 
Fecha de Ingreso: septiembre-2009
Mensajes: 24
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Teclas acceso rápido

Gracias por la sugerencia pero ya lo solucione Paso el Código por si a alguien le sirve si quieren una explicación del mismo me pueden consultar
Código Javascript:
Ver original
  1. public void mapeoTeclas(){
  2.      
  3.         ActionMap mapaAccion = this.getRootPane().getActionMap();
  4.  
  5.  
  6.          
  7.           //ActionMap mapaAccion = this.jPanel1.getActionMap();
  8.        
  9.         InputMap map =  this.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
  10.  
  11.         //F2
  12.         KeyStroke key_F2 = KeyStroke.getKeyStroke(KeyEvent.VK_F2,Event.CTRL_MASK,true);
  13.         //F2
  14.         KeyStroke key_F3 = KeyStroke.getKeyStroke(KeyEvent.VK_F3,Event.CTRL_MASK,true);
  15.         //F2
  16.         KeyStroke key_F4 = KeyStroke.getKeyStroke(KeyEvent.VK_F4,Event.CTRL_MASK,true);
  17.         //F2
  18.         KeyStroke key_F5 = KeyStroke.getKeyStroke(KeyEvent.VK_F5,Event.CTRL_MASK,true);
  19.         //F2
  20.         KeyStroke key_F6 = KeyStroke.getKeyStroke(KeyEvent.VK_F6,Event.CTRL_MASK,true);
  21.  
  22.  
  23.  
  24.         //Key Actions
  25.         map.put(key_F2, "accion_F2");
  26.         mapaAccion.put("accion_F2",Accion_CTRLF2());
  27.  
  28.         map.put(key_F3, "accion_F3");
  29.         mapaAccion.put("accion_F3",Accion_CTRLF3());
  30.  
  31.         map.put(key_F4, "accion_F4");
  32.         mapaAccion.put("accion_F4",Accion_CTRLF4());
  33.  
  34.         map.put(key_F5, "accion_F5");
  35.         mapaAccion.put("accion_F5",Accion_CTRLF5());
  36.  
  37.         map.put(key_F6, "accion_F6");
  38.         mapaAccion.put("accion_F6",Accion_CTRLF6());
  39.  
  40. //      
  41. }
  42.        
  43.     public AbstractAction Accion_CTRLF2(){
  44.         return new AbstractAction() {   public void actionPerformed(ActionEvent e) {   Btn2P_FacturacionActionPerformed(e);   }};
  45.     }
  46.        
  47.     public AbstractAction Accion_CTRLF3(){
  48.         return new AbstractAction() {   public void actionPerformed(ActionEvent e) {   Btn2P_ContavilidadActionPerformed(e);   }};
  49.     }
  50.        
  51.     public AbstractAction Accion_CTRLF4(){
  52.         return new AbstractAction() {   public void actionPerformed(ActionEvent e) {   Btn2P_ProductoActionPerformed(e);   }};
  53.     }
  54.        
  55.     public AbstractAction Accion_CTRLF5(){
  56.         return new AbstractAction() {   public void actionPerformed(ActionEvent e) {   Btn2P_PersonaActionPerformed(e);   }};
  57.     }
  58.        
  59.     public AbstractAction Accion_CTRLF6(){
  60.         return new AbstractAction() {   public void actionPerformed(ActionEvent e) {   Btn2P_OtrosActionPerformed(e);   }};
  61.     }

Hay que tener en cuenta que este código se encuentra de una clase que hereda de javax.swing.JFrame luego lo luego lo que ice fue llamar al método mapeoTeclas() desde el new del objeto

Etiquetas: programa, teclas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:02.