我是新來的JavaFx,我試圖創建一個簡單的確認框,確定用戶是否真的要退出或沒有類。它有一個函數返回一個布爾值,表示如果用戶點擊「是」或「否」:按鈕不改變本地原始變量與JavaFx
public class ConfirmBoxController implements IView {
public javafx.scene.control.Button yes_BTN;
public javafx.scene.control.Button no_BTN;
private volatile boolean answer;
// Constructors..//
public boolean confirm(){
try{
stage = new Stage();
FXMLLoader fxmlLoader = new FXMLLoader();
Parent root = fxmlLoader.load(getClass().getResource("ConfirmBox.fxml").openStream());
Scene scene = new Scene(root, 250, 140);
stage.setScene(scene);
stage.showAndWait();
return answer;
}
catch(Exception E){
E.printStackTrace();
return true;
}
}
public void yes() {
this.answer = true;
Stage stage = (Stage) yes_BTN.getScene().getWindow();
stage.close();
}
public void no() {
this.answer = false;
Stage stage = (Stage) no_BTN.getScene().getWindow();
stage.close();
}
}
我試圖使「答案」揮發,而不是,但它並沒有改變任何東西。
1)除非你需要同步,你可以省略「volatile」。 2)從您發佈的代碼中,不清楚是否在按鈕上附加了單擊事件處理程序。這是否是這種情況(例如,稱爲「是」和「否」的方法)? – Patrick
'FXMLLoader'創建控制器的另一個實例。 https://stackoverflow.com/questions/14187963/passing-parameters-javafx-fxml – fabian
但_FXMLoader_知道哪個類創建一個實例?由於XML文件中_AnchorPane_標記中的_fx:controller_屬性?但AFAIK這個屬性不一定需要存在。 – Patrick