public class StartPeriodMessage extends Stage implements Initializable{
@FXML
private Button btnYes = new Button();
@FXML
private boolean btnYesStatus = false;
public StartPeriodMessage(){
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().
getResource("/fxmlFiles/StartPeriodMessage.fxml"));
loader.setController(this);
Parent root = loader.load();
Scene scene = new Scene(root);
setScene(scene);
} catch (IOException ex) {
ex.printStackTrace();
}
}
private void handelYesBtn(){
setBtnYesStatus(true);
this.close();
}
@FXML
public void setBtnYesStatus(boolean btnYesStatus) {
this.btnYesStatus = btnYesStatus;
System.out.println(btnYesStatus); // prints true
}
public boolean isBtnYesStatus() {
return btnYesStatus; // returns false
}
}
public class WorkPeriodController extends Stage implements Initializable{
@FXML
private void handlebtnStartPeriod() throws InterruptedException{
StartPeriodMessage spm = new StartPeriodMessage();
spm.initOwner(this);
spm.initModality(Modality.APPLICATION_MODAL);
spm.show();
if (spm.isBtnYesStatus()) // always false {
btnStartPeriod.setDisable(true);
// do some actions
}
}
答案 0 :(得分:0)
您可以轻松地将动作事件设置为您的按钮,如下所示:
@FXML
private void btnYes(ActionEvent event) {
// your action here..
System.out.println(Button is pressed..);
}
你不需要去初始化部分FXMLLoader会为你做这件事
@FXML
private Button btnYes = new Button();
答案 1 :(得分:0)
您无需在任何地方编写@FXML!仅当您从fxml文件引用方法/变量时。
如果从FXML文件中引用类似btnYes的变量,则会在那里初始化而不是在您的类中。 你在哪里加载你的fxml文件?如果以下(我刚刚清理它)不起作用,请同时提供您的fxml文件和您调用的代码isBtnYesStatus();
@FXML
private Button btnYes;
private boolean btnYesStatus = false;
@FXML
private void handelYesBtn(){
this.setBtnYesStatus(true);
this.close();
}
public void setBtnYesStatus(boolean btnYesStatus) {
this.btnYesStatus = btnYesStatus;
System.out.println(btnYesStatus);
}
public boolean isBtnYesStatus() {
return btnYesStatus;
}