私はグラフィックノードとして埋め込まComboBox
とButton
を持っている:ComboBoxのため埋め込みコンボボックスアクションをボタンアクションと別に処理するにはどうすればよいですか?
<Button alignment="CENTER_RIGHT" contentDisplay="RIGHT" mnemonicParsing="false" onAction="#handleQuickNote" text="QuickNote">
<graphic>
<ComboBox fx:id="cboQuickNoteList" prefWidth="5.0" />
</graphic>
</Button>
デフォルトの動作では、項目が選択されたときにボタンのonHandleメソッドをトリガーするように思われます。
ComboBoxで別のリスナーを使用しようとしましたが、ボタンの機能が終了した後に呼び出されたようです。
ボタンのハンドラ:
@FXML
private void handleQuickNote() {
// Attempt to create new "QuickNote Transaction"
Global.transactionListController.addTransaction("QuickNote");
}
コンボボックスのリスナー:
// 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);
}
});
がどのように項目がコンボボックスから選択された場合にボタンのハンドラをキャンセルするに行きますか?
あなたがボタン内にコンボボックスを持っていない理由:
initialize
メソッド内? – ItachiUchiha
私のアプリケーションの設計と機能に合っています。私はそれらを分けることができますが、ComboBoxをボタン内に保つことを好むでしょう。 – Zephyr
あなたの機能が望んでいるものがわかりませんが、あなたが現在持っているものにもっと良い解決策が必要であると確信しています。 AFAIT、あなたの現在のアプローチでは、ボタンかComboBoxをクリックしたいかどうかを知る方法がないようです。さらに、ボタンのアクションハンドラが最初に呼び出されるため、フィルタリングするのがさらに難しくなります。 – ItachiUchiha