gpt4 book ai didi

java - JComboBox 鼠标单击单元格

转载 作者:行者123 更新时间:2023-12-02 03:26:55 27 4
gpt4 key购买 nike

当用户单击(用鼠标)JComboBox 中的项目时,我尝试调用函数;但是,我不希望为任何键盘事件触发此事件 - 我只希望在单击下拉列表的特定单元格时触发此事件(我知道 addActionListener 和 addItemListener,但这些事件被触发的事件比我想要的更多)。

编辑:我应该指定 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();
}

最佳答案

您错过了在我在评论中发布的链接中将其添加到滚动 Pane 的视口(viewport) View 中。

Field scrollerInBasicComboPopup = BasicComboPopup.class.getDeclaredField("scroller");
scrollerInBasicComboPopup.setAccessible(true);
JScrollPane scroller = (JScrollPane) scrollerInBasicComboPopup.get(popup);
scroller.getViewport().getView().addMouseListener(listener);

关于java - JComboBox 鼠标单击单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38728330/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com