У меня есть Button
со встроенным ComboBox
в виде графического узла:Как обработать встроенное действие ComboBox отдельно от Button Action?
<Button alignment="CENTER_RIGHT" contentDisplay="RIGHT" mnemonicParsing="false" onAction="#handleQuickNote" text="QuickNote">
<graphic>
<ComboBox fx:id="cboQuickNoteList" prefWidth="5.0" />
</graphic>
</Button>
поведение по умолчанию для ComboBox, кажется, чтобы вызвать метод onHandle на кнопку, когда выбран элемент.
Я попытался использовать отдельный слушатель на ComboBox, но это, как представляется, называется ПОСЛЕ того, как функция кнопки была.
Кнопка Handler:
@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?
Почему у вас есть ComboBox внутри кнопки? – ItachiUchiha
Он соответствует дизайну и функциональности моего приложения. Я мог бы разделить их, но предпочел бы сохранить ComboBox внутри кнопки. – Zephyr
Я не уверен, что ваша функциональность желает, но я уверен, что должно быть лучшее решение для того, что у вас есть. AFAIT, в вашем текущем подходе, похоже, нет способа узнать, хочет ли пользователь нажать на кнопку или на ComboBox. Более того, поскольку обработчик действий кнопок называется первым, все еще сложнее фильтровать. – ItachiUchiha