私のスイングプログラムでは、私はJTextFieldとJButtonを持っています。私が望むのは、ユーザーが "enter"キーを押すと、JButtonのactionListenerが実行されます。どうすればいい? ありがとうございます。どのように関連付けるボタンをクリックして "Enter"を押して?
答えて
JRootPaneには、必要な操作を行うメソッドsetDefaultButton(JButtonボタン)があります。あなたのアプリケーションがJFrameの場合は、RootPaneContainerインターフェイスを実装し、JFrameのgetRootPane()を呼び出してルートペインを取得し、返されたルートペインでsetDefaultButtonを呼び出します。同じテクニックは、JApplet、JDialog、またはRootPaneContainerを実装する他のクラスでも機能します。
これは、.getRootPane()を使用する予定のコンポーネントを初期化した後でのみ機能しますか?もしそうなら、それは私がそのコンポーネントのコンストラクタに直接組み込むことができなかったことを意味します、はい? –
@LucasMorgan:これを動作させるにはJRootPaneが必要です。意味があります。それ以外の場合は、キーバインディングを使用する必要があります。 –
例がここにあり
http://www.java2s.com/Code/Java/Swing-JFC/SwingDefaultButton.htm
これは何が必要です:rootPane.setDefaultButton(Button2の);
ActionListenersを削除します。それはリスナーをやるための古いスタイルです。 Actionクラスへの卒業生。そのトリックは、InputMapsとActionMapsの動作を理解することです。これは実際にはかなりいいですスイングのユニークな特徴である:
http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html
は、ここであなたがそれを行う方法は次のとおりです。WHEN_ANCESTOR_OF_FOCUSED_COMPONENTを使用して
JPanel panel = new JPanel();
panel.setLayout(new TableLayout(...));
Action someAction = new AbstractAction("GO") {
public void actionPerformed() {
}
};
InputMap input = panel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
input.put(KeyStroke.getKeyStroke("enter", "submit");
panel.getActionMap().put("submit", someAction);
panel.add(button = new JButton(someAction));
panel.add(textField = new JTextField());
は、パネルはそれの子のいずれかからキーボードイベントを受け取ることができます(すなわち祖先)。したがって、パネル内にある限り、どのコンポーネントにフォーカスがあっても、キーストロークはActionMapで「submit」の下に登録されたアクションを呼び出します。
メニュー、ボタン、またはキーストロークでアクションを再利用することができます。
Key Bindingは多くの状況で便利ですが、提供される他のよりシンプルなソリューション(バックグラウンドでキーバインディングを使用する可能性が高い)を使用すると、現在の問題のために少し残虐ではありません。 –
これはダイアログまたはそれ自体がメインUIであるかどうかを作者が指定していないかどうかによって異なります。 setDefaultButton()を使うと、それがダイアログ上で唯一のものとみなされます。アクションを理解し、Swingツールキットの他の部分とどう関係しているかは、メニューバインディング、グローバルキーストローク、およびデフォルトコンポーネントのキーマッピングのカスタマイズなど、他のトピックに詳しく説明します。さらに、ActionListenersを使用する人はすべて、アクションが優れていることを認識する必要があります。 – chubbsondubs
"ActionListenersを使用している人はすべて、アクションが優れていることを認識する必要があります。すべての一般化が間違っていると私は教えられました。 :) –
- 1. どのようにテーブル自体を使用して関連付ける?
- 2. Enterボタンを押してからOKボタンを押すと、その欲しい
- 3. インターフェイスのボタンを押して別のビューに転送する方法を関連付けるにはどうすればよいですか?
- 4. Enterを押すか送信ボタンを押してフォームを送信するには?
- 5. Enterキーを押したときに特定のボタンをクリックする方法
- 6. クリックしてEnterキーを押しますか?
- 7. (IBAction)ボタンを押して出力をラベル付けする
- 8. Enterキーを押し続ける
- 9. ファクトリー内の2つの関連付けを取得して別の関連付けを行う
- 10. ブラウザの[更新]ボタンをクリックしてリンクを選択して[Enter]キーを押すのとはどのような違いがありますか?
- 11. CakePHP3:beforeDelete()コールバックでどのように関連付けるには?
- 12. クリック時にボタンに関連付けられたラベルをプログラムで作成する
- 13. jQueryでボタンを連続してクリックしないようにする方法は?
- 14. vbaを使用してインターネットページのボタンを押してみよう
- 15. スレッドとデータを関連付ける:どうしますか?
- 16. レールはどのように関連付けを管理しますか?
- 17. レルムはどのように関連付けを処理しますか?
- 18. NHibernateを介して2つのクラスをどのように関連付けることができますか?
- 19. Firebase Android子どもを押し付けようとしていて、その子供の下に子供を押し込もうとしています。
- 20. ボタンを押してドロップダウンアイテムを「クリック可能」にする方法は?
- 21. Railsとの関連付けを試みようとしています
- 22. Enterを押して続行し、Escを押して終了するC++
- 23. Yii2 - Enterキーを押したときではなく、送信ボタンをクリックするだけでアクティブフォームを送信
- 24. タッチパターンを検出して情報に関連付ける
- 25. テキストエリアにEnterキーを押して値を送信し、Shift + Enterを押すと次の行に移動します。
- 26. Railsのhas_manyの関連付け:私は、次の2つの関連付けを持って、関連するオブジェクト
- 27. batファイルをテキストファイルからコピーして貼り付け、Enterキーを繰り返し押してください。
- 28. SailsJSによる関連付け:関連付けの作成方法?
- 29. 顧客がFacebook Likeボタンのような関連ボタンを希望している
- 30. perfはどのようにイベントを関数に関連付けますか?
getRootPane()。setDefaultButton(JButton defaultButton); – ashubuntu