Alejosoft.. Era para vos la pregunta :)

¿Cómo comente en los dos mensajes anteriores, la intención de mi programa es ir haciendo foco en distintos botones, durante un periodo de tiempo, y que al seleccionarlo realice una acción, hasta el momento eso lo he logrado, pero solo puedo seleccionar el botón que tiene el foco con la barra espaciadora... Entonces la pregunta es... Eso esta definido en la clase de Java FocusTraversalPolicy? ¿Lo puedo cambiar? Y si solo puedo seleccionarlo con la barra espaciadora... ¿seria conveniente crear una interfaz donde haga que cualquier tecla funcione como la barra espaciadora? Si es así... ¿Tengo qué hacerlo una por una o hay algún método o clase que me tome todas las teclas?... La idea es que al apretar cualquier tecla... Sea tomada como la barra espaciadora... Espero haberme explicado bien... Y espero una pronta respuesta! Como siempre GRACIAS de antemano! Saludos
Respuesta
1
Bueno existen varias formas de lograr lo que quieres hacer, pero la que me parece más sencilla es esta:
Crea una clase Botón que extienda de JButton, hacer esto te ahorrara mucho código y repeticiones engorrosas, la idea es agregarle un keyListener a cada botón para que reciba eventos de teclado, y en el constructor de tu clase Botón colocaras el keyListener para que al presionar cualquier tecla se presione el botón usando el método doClick(), seria algo más o menos así:
class Boton extends JButton {
public Boton(String str){
setText(str);
// puedes tambien ahorrar codigo si puedes definir
// propiedades comunes entre tus botones aqui, como
// Por ejemplo, tipo de fuente, color, bordes, actions, etc
addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
...
}
});
setFont(new Font("Verdana",1,12));
...
// agregamos el oyente de teclado
addKeyListener( new KeyAdapter(){
public void keyPressed(KeyEvent e){
// este if es porque la barra espaciadora ya hace este trabajo automaticamente y evitamos que se dispare el boton 2 veces
if ( e.getKeyChar() != ' ' ){
((JButton)e.getSource()).doClick();
}
}
});
}
}
Espero que te sirva y por favor no olvides finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas