除了按钮操作之外,我如何处理嵌入式 ComboBox 操作?

How do I handle embedded ComboBox action apart from Button Action?

我有一个 Button,其中嵌入了 ComboBox 作为图形节点:

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

ComboBox 的默认行为似乎是在选择项目时触发 Button 的 onHandle 方法。

我尝试在 ComboBox 上使用单独的侦听器,但它似乎是在按钮功能被调用之后调用的。

按钮处理程序:

@FXML
private void handleQuickNote() {
   // Attempt to create new "QuickNote Transaction"
   Global.transactionListController.addTransaction("QuickNote");
}

ComboBox 侦听器:

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

如果从 ComboBox 中选择了一个项目,我将如何取消 Button 处理程序?

ComboBox 参加 onAction 活动。这可以防止 Button 也收到它。

initialize 方法内部:

cboQuickNoteList.setOnAction(ActionEvent::consume);