1

JComponent一般的に、編集者からどのように入手しますか?

例:

editable にしましょうJComboBox。したがって、コンボにはエディターがあります (JTextFieldデフォルト)。

JComboBox b = new JComboBox();
b.setEditable(true);

次に、「グローバル」キーボード リスナーを Swing アプリケーションに追加します。

Toolkit.getDefaultToolkit().addAWTEventListener(
        new AWTEventListener() {
            public void eventDispatched(AWTEvent e) {
                JComponent c = (JComponent) e.getSource();
                System.out.println(c); // <- printing the event source
            }
        },
        AWTEvent.KEY_EVENT_MASK);

コンボ ボックスにテキストを入力した出力はb、キー イベントのソースがbのエディターであり、コンボ ボックスb自体ではないことを示しています。

javax.swing.plaf.metal.MetalComboBoxEditor$1[,0,0, ...
javax.swing.plaf.metal.MetalComboBoxEditor$1[,0,0, ...
javax.swing.plaf.metal.MetalComboBoxEditor$1[,0,0, ...
...

bエディタまたはキー イベントから参照を取得する方法はありますか? いいえの場合、「現在編集中のコンボ ボックス」の参照を取得するにはどうすればよいですか?

PS: 「なぜそれが必要なのですか?」などの質問はしないでください。ありがとう。

4

1 に答える 1

2

呼び出しgetEditorComponent()ます。このメソッドは interface で定義されていますComboBoxEditor:

public interface ComboBoxEditor {

  /** Return the component that should be added to the tree hierarchy for
    * this editor
    */
  public Component getEditorComponent();
  ................

最初にキャストしComboBoxEditorます:

Component component = (ComboBoxEditor)event.getSource()).getEditorComponent();
于 2013-01-17T14:55:15.460 に答える