Combobox 与键盘箭头键一起使用时,Javafx组合框changeListener激发动作

Combobox 与键盘箭头键一起使用时,Javafx组合框changeListener激发动作,combobox,javafx,Combobox,Javafx,当我在combobox(实现changeListener)中使用箭头键时,它会触发操作。如何使它仅在按下enter键或用鼠标选择时工作 编辑: 基本上我感觉的问题是鼠标事件。当按下组合框的下拉按钮时,将触发一个操作 CCombobox.setEditable(true); CCombobox.setOnMouseClicked(new EventHandler<MouseEvent>() { @Override publ

当我在combobox(实现changeListener)中使用箭头键时,它会触发操作。如何使它仅在按下enter键或用鼠标选择时工作

编辑:

基本上我感觉的问题是鼠标事件。当按下组合框的下拉按钮时,将触发一个操作

CCombobox.setEditable(true);
CCombobox.setOnMouseClicked(new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent event) {
                     System.out.println("Clicked");
                }
CCombobox.setEditable(true);
setOnMouseClicked(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
System.out.println(“单击”);
}

ChangeListener正在注册对所选项目所做的修改。它永远不会向您提供有关鼠标或键盘的信息

您需要做的是在keyTyped(或keyPressed)和MouseClicked上添加一些EventHandler,以便捕获您想要的内容。然后您可以对这些事件做出反应:

//cb = a ComboBox
cb.setOnKeyPressed(new EventHandler<KeyEvent>() {
                @Override
                public void handle(KeyEvent keyEvent) {
                    if (keyEvent.getCode() == KeyCode.ENTER) {
                        //Do what you want to do
                    }
                }
            });

            cb.setOnMouseClicked(new EventHandler<MouseEvent>() {

                @Override
                public void handle(MouseEvent t) {
                    //Do what you want to do
                }
            });
//cb=组合框
cb.setOnKeyPressed(新的EventHandler(){
@凌驾
公共无效句柄(KeyEvent KeyEvent){
if(keyEvent.getCode()==KeyCode.ENTER){
//做你想做的事
}
}
});
cb.setOnMouseClicked(新的EventHandler(){
@凌驾
公共无效句柄(MouseEvent t){
//做你想做的事
}
});

一些示例代码或图片可能有助于其他人理解您的确切要求。谢谢您的帮助。我已编辑了我的问题。当按下Combobox的下拉按钮时,它将触发鼠标事件。但我只希望Combobox的下拉列表中出现鼠标事件。