除了按钮操作之外,我如何处理嵌入式 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);
我有一个 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);