我的任務是在javafx中單擊3個按鈕時調用單個方法,該特定方法執行簡單更改單擊按鈕顏色的代碼。在javafx中傳遞視圖(fxml)和控制器之間的值
根據場景我已經在fxml中創建了3個按鈕,並且在我的控制器中我定義了一個方法。我的任務代碼是簡單的
myButton.setStyle("-fx-background-color:green");
現在你可以請告訴我,我怎麼能得到特定的按鈕id被點擊。 Here myButton是fx:id被點擊的按鈕。
在此先感謝。
我的任務是在javafx中單擊3個按鈕時調用單個方法,該特定方法執行簡單更改單擊按鈕顏色的代碼。在javafx中傳遞視圖(fxml)和控制器之間的值
根據場景我已經在fxml中創建了3個按鈕,並且在我的控制器中我定義了一個方法。我的任務代碼是簡單的
myButton.setStyle("-fx-background-color:green");
現在你可以請告訴我,我怎麼能得到特定的按鈕id被點擊。 Here myButton是fx:id被點擊的按鈕。
在此先感謝。
你可以做到以下幾點:
@FXML
public void handleActionEvent(ActionEvent event) {
Object source = event.getSource();
if (source.equals(buttonA)) {
buttonA.setStyle("-fx-background-color:red");
} else if (source.equals(buttonB)) {
buttonB.setStyle("-fx-background-color:green");
} else if (source.equals(buttonC)) {
buttonC.setStyle("-fx-background-color:blue");
}
}
有你的控制器內的三個按鈕:
@FXML
private Button buttonA;
@FXML
private Button buttonB;
@FXML
private Button buttonC;
每個按鈕需要FXML內一致的id
和onAction="#handleActionEvent"
。
fx:id
's永遠不會傳遞給控制器。相反,當你通過FXMLLoader加載fxml時,它們被用來將控件的實例注入控制器。
當你的FXML有一個控制
<Button fx:id="myButton">
您需要確保您在控制器內創建按鈕參考應具有相同的名稱。否則,按鈕的實例化將失敗。
public class MyController {
@FXML
private Button myButton; // name should be same as the fx:id
...
}
同樣,如果你想在按鈕添加一個動作,你可以將其添加在FXML,
<Button fx:id="myButton" onAction="#myAction">
,這將尋求與控制器相同名稱的方法。無論何時您點擊按鈕,它都會調用控制器中定義的方法。
public class MyController {
@FXML
private Button myButton; // name should be same as the fx:id
...
public void myAction(ActionEvent event) {
// Do Something
}
}
可以定義一個'的OnAction = 「#方法名」'爲每個按鈕如圖[本示例](https://docs.oracle.com/javase/8/javafx/fxml-tutorial/fxml_tutorial_intermediate .htm#CIAEDJBA) – ItachiUchiha
that'a ok,但是如何將該按鈕的fx:id傳遞給控制器 – tinku