我想在用戶單擊(使用鼠標)JComboBox中的項目時調用一個函數;然而,我不希望爲任何鍵盤事件觸發此事件 - 我只希望點擊某個特定單元格的下拉菜單(我知道addActionListener和addItemListener,但是這些會被觸發以獲取比我想要的更多的事件)。JComboBox mouseClicked單元格
編輯:我應該指定mouseClicked不工作 - 沒有事件似乎被解僱(但是,他們是在一個點上,但是當發生這種情況時,他們也解僱了點擊文本字段),但我認爲這是從標題中推斷出來的。
我自己也嘗試這裏給出(也不起作用)解決方案:Editable JCombobox mouseclicked event not working
EDIT2:我嘗試以下,但點擊仍無輸出:
try {
Field popupInBasicComboBoxUI = BasicComboBoxUI.class.getDeclaredField("popup");
popupInBasicComboBoxUI.setAccessible(true);
BasicComboPopup popup = (BasicComboPopup)popupInBasicComboBoxUI.get(attachedCB.getUI());
Field scrollerInBasicComboPopup = BasicComboPopup.class.getDeclaredField("scroller");
scrollerInBasicComboPopup.setAccessible(true);
JScrollPane scroller = (JScrollPane)scrollerInBasicComboPopup.get(popup);
scroller.getViewport().getView().addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("nope");
}
});
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (NoSuchFieldException e) {
e.printStackTrace();
}
您需要的的MouseListener添加到彈出不JComboBox時爲例指出這裏:http://engin-tekin.blogspot.com/2009/10/hrefhttpkfd.html你試試這個,它沒有工作?如果是的話,你在哪裏使用不同的LAF? – Jayfray
查看編輯2,沒有工作:( – user235236
嘗試添加監聽器從popup.getList() – Jayfray