1
如何從編輯器中獲得JComponent
?Swing:如何從其編輯器中獲取JComponent
例子:
讓我們編輯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
的參考? 如果不是,我怎樣才能得到'當前編輯組合框'的引用?
P.S .:請不要問我「你爲什麼需要它?」等問題。謝謝。
嘗試使用的getParent() – Petr
:)爲什麼我們不應該問? getParent()在你的情況下返回什麼? –
我不禁要問:你爲什麼需要那個? –