2010-12-17 10 views
6

JButtons consideran presionando la barra espaciadora para ser el mismo que hacer clic en el JButton (suponiendo que el JButton tiene el foco, que estoy asumiendo aquí). ¿Hay alguna forma de desactivar este comportamiento para que ignoren presionar la barra espaciadora?Desactivación barra espaciadora desencadenar hacer clic para JButton

también, de manera más general, ¿hay una técnica para hacer esto con AbstractButtons?

+0

pensé que su pregunta era acerca de los botones plural. No es una interfaz de usuario muy buena para que algunos botones funcionen con la barra espaciadora y otros no. Entonces, ¿por qué querrías cambiar los botones uno a la vez? – camickr

Respuesta

1

Se puede desactivar haciendo

jbutton.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "none"); 

Esto parece funcionar para otra AbstractButton s, así como JRadioButton s.

Como @camickr señala below se puede resolver para todos los JButton s de una sola vez de la siguiente manera:

InputMap im = (InputMap)UIManager.get("Button.focusInputMap"); 
im.put(KeyStroke.getKeyStroke("pressed SPACE"), "none"); 
im.put(KeyStroke.getKeyStroke("released SPACE"), "none"); 
+0

Gracias por informarme. Respuesta actualizada – aioobe

3

El enlace dado por aioobe muestra cómo hacerlo para un botón individual. Si quieres hacer esto para todos JButton de que haría:

InputMap im = (InputMap)UIManager.get("Button.focusInputMap"); 
im.put(KeyStroke.getKeyStroke("pressed SPACE"), "none"); 
im.put(KeyStroke.getKeyStroke("released SPACE"), "none"); 

si quieres que lo haga por casillas de verificación y botones de radio que tendría que repetir lo anterior para cada mapa de entrada diferente.

Es posible que desee leer Enter Key and Button. En realidad, hace lo contrario de lo que quiere ya que explica cómo invocar el botón cuando se utiliza la tecla Intro. Pero puede ayudar a explicar por qué esta solución funciona a la inversa.

Cuestiones relacionadas