Как по принцип бихте получили 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()
във вашия случай? - person vishal_aim   schedule 17.01.2013