【问题标题】:Javafx combobox changeListener fire action when used with keyboard arrow key与键盘箭头键一起使用时,Javafx 组合框 changeListener 触发动作
【发布时间】:2014-07-14 11:43:01
【问题描述】:

当我在组合框中使用箭头键(实现 changeListener)时,它会触发动作。我怎样才能使其仅在按下或使用鼠标选择时才起作用。

编辑:

基本上我觉得问题在于鼠标事件。在

中按下组合框的下拉按钮时会触发一个动作
CCombobox.setEditable(true);
CCombobox.setOnMouseClicked(new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent event) {
                     System.out.println("Clicked");
                }

【问题讨论】:

  • 一些示例代码或图片可能有助于其他人了解您的确切要求。

标签: combobox javafx


【解决方案1】:

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
                }
            });

【讨论】:

  • 感谢您的帮助。我已经编辑了我的问题。当按下组合框的下拉按钮时,它会触发鼠标事件。但我只希望鼠标事件出现在组合框的下拉列表中。
猜你喜欢
  • 2016-10-14
  • 1970-01-01
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多