最善の方法をしたい各ボタンの上に呼び出し、それぞれに異なる方法を定義するために実際にありますボタン。次のようにコードを最小化することができます。
numChange(...)
メソッドを定義して、必要なパラメータを取得します。
private void numChange(int num) {
// process num here...
}
、その後numChange()
単に委譲し、各ボタンに別のハンドラメソッドを定義:
<Button fx:id="one" onAction="#handleButtonOne" ... />
<Button fx:id="two" onAction="#handleButtonTwo" ... />
あなたが変えることができます。
@FXML
private void handleButtonOne() {
numChange(1);
}
@FXML
private void handleButtonTwo() {
numChange(2);
}
、その後はFXMLで明らかな変化を加えるともちろん、必要に応じてnumChange()
が受け入れるパラメータの数および/またはタイプ。しかし、これは単に多くもたらす
<Button fx:id="one" onAction="#numChange" userData="1" ... />
<Button fx:id="two" onAction="#numChange" userData="2" ... />
:
専用メソッドを有する各ボタンを回避する別のFXMLベースのソリューション、そのユーザデータを設定することにより、FXMLのノードとの値を関連付けることです私見は、以前のソリューションよりも少ない有用にダウンキャストと型変換の:
@FXML
private void numChange(ActionEvent event) {
Node node = (Node) event.getSource() ;
String data = (String) node.getUserData();
int value = Integer.parseInt(data);
// ...
}
最後に、ちょうど、コントローラに直接ハンドラを登録する方が簡単かもしれません:
<Button fx:id="one" ... />
<Button fx:id="two" ... />
と
public class Controller {
@FXML
private Button one ;
@FXML
private Button two ;
public void initialize() {
one.setOnAction(e -> numChange(1));
two.setOnAction(e -> numChange(2));
}
private void numChange(int value) {
// ...
}
}
'one.setOnAction(イベント - > NumChange(...));' 'two.setOnAction(イベント - > NumChange(...));' – Kachna
@Foo [標準命名規則]を使用してください(https://en.wikipedia.org/wiki/Naming_convention_(プログラミング)#Java) –