Button 除了按钮操作外,如何处理嵌入式组合框操作?

Button 除了按钮操作外,如何处理嵌入式组合框操作?,button,javafx,javafx-2,Button,Javafx,Javafx 2,我有一个按钮,带有一个嵌入的组合框作为图形节点: <Button alignment="CENTER_RIGHT" contentDisplay="RIGHT" mnemonicParsing="false" onAction="#handleQuickNote" text="QuickNote"> <graphic> <ComboBox fx:id="cboQuickNoteList" prefWidth="5.0" /> &

我有一个
按钮
,带有一个嵌入的
组合框
作为图形节点:

<Button alignment="CENTER_RIGHT" contentDisplay="RIGHT" mnemonicParsing="false" onAction="#handleQuickNote" text="QuickNote">
    <graphic>
        <ComboBox fx:id="cboQuickNoteList" prefWidth="5.0" />
    </graphic>
</Button>
组合框侦听器:

// Add listener to the ComboBox to override the button function
   cboQuickNoteList.valueProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            // Create new QuickNotes transaction
            QuickNoteController newQuickNoteTransaction = new QuickNoteController();
            newQuickNoteTransaction.setQuickNote(newValue);
        }
   });

如果从组合框中选择了一个项目,我将如何取消按钮处理程序?

操作
事件汇总到
组合框
。这将防止
按钮
也接收到它

初始化
方法中:

cboQuickNoteList.setOnAction(ActionEvent::consume);

为什么按钮中有一个组合框?它适合我的应用程序的设计和功能。我可以将它们分开,但更愿意将组合框保留在按钮内。我不确定您的功能要求是什么,但我确信一定有更好的解决方案来解决您当前的问题。AFAIT,在您当前的方法中,似乎无法知道用户是想单击按钮还是组合框。此外,由于按钮操作处理程序是先调用的,因此过滤起来就更加困难了。按钮的
操作
实际上是在选择了
组合框
之后调用的。我不确定在
组合框
侦听器完成后是否有办法取消整个
操作
方法。当然,还有其他方法可以实现我所需要的功能,但我喜欢嵌入式组合框的外观,并且出于我的目的,可以让我的用户清楚地知道它的用途。这太完美了,@fabian。非常感谢。
cboQuickNoteList.setOnAction(ActionEvent::consume);