2010-12-17 16 views
6

JButtonはスペースバーを押してJButtonをクリックすることを検討します(ここではJButtonにフォーカスがあると仮定します)。彼らはスペースバーを押すのを無視するようにこの動作をオフにする方法はありますか?スペースバーをトリガーするJButtonのクリックを無効にする

また、より一般的には、AbstractButtonsでこれを行う方法がありますか?

+0

あなたの質問はボタンの複数についてのものだと思った。いくつかのボタンがスペースバーで動作するようにするのは、とても良いUIではありません。では、なぜボタンを1つずつ変更したいのですか? – camickr

答えて

1

あなたは

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

を行うことによって、それを無効にすることができますこれはJRadioButtonのような、同様に他のAbstractButtonのために働くようです。 @camickrとして

は、次のように一度にすべてのJButtonのためにそれを解決することができbelow指摘:

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

私に知らせてくれてありがとう。回答が更新されました。 – aioobe

3

aioobeによって与えられたリンクは、個々のボタンのためにそれを行う方法を示しています。あなたはすべてのJButtonのあなたがどうなるのためにこれをしたい場合:

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

あなたがチェックボックスやラジオボタンのためにそれをしたい場合は、それぞれ異なる入力マップについては、上記を繰り返す必要があります。

Enter Key and Buttonをお読みください。実際には、Enterキーが使用されたときにボタンを呼び出す方法について説明しているので、あなたが望むものの反対のことをします。しかし、なぜこのソリューションが逆に働くのかを説明するのに役立つかもしれません。

関連する問題