我在javaFX中使用radioButton来设置参数。
public class SelectCOM extends Application {
private int comNum ;
public int getComNum() {
return comNum;
}
public void setComNum() {
launch();
}
@Override
public void start(Stage primaryStage) {
//......
//OK BUTTON
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String str = tg.getSelectedToggle().toString();
int begin = str.indexOf("COM");
str = str.substring(begin+3, str.length()-1);
comNum = Integer.parseInt(str);
System.out.println(comNum);
primaryStage.close();
}
});
}
当我致电setComNum
时,变量comNum
会更改为我想要的数字。但getComNum
只返回0
这是我的调用方法:
SelectCOM selectCOM = new SelectCOM();
selectCOM.setComNum();//After clicking the OK BUTTON about 3s, a 0 printed.
int com = selectCOM.getComNum();
System.out.println(com);
答案 0 :(得分:1)
launch()
中的 static Application
方法创建了Application
子类的新实例,启动了JavaFX工具包,并调用了start()
它创建的实例。 (对start()
的调用是在FX申请主题上进行的。)
因此,您要在通过调用comNum
创建的实例中的字段上设置launch()
值,但是您在自己创建的实例上调用getComNum()
(即在不同的对象);因此你没有得到正确的价值。
另请注意,launch()
方法,因此您的setComNum()
方法将在JavaFX平台退出之前完成(默认情况下,这是用户关闭最后一个窗口时)。