如何在javaFX中设置和获取私有变量?

时间:2016-04-17 12:51:11

标签: java javafx

我在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);

1 个答案:

答案 0 :(得分:1)

launch()中的 static Application方法创建了Application子类的新实例,启动了JavaFX工具包,并调用了start()它创建的实例。 (对start()的调用是在FX申请主题上进行的。)

因此,您要在通过调用comNum创建的实例中的字段上设置launch()值,但是您在自己创建的实例上调用getComNum()(即在不同的对象);因此你没有得到正确的价值。

另请注意,launch()方法,因此您的setComNum()方法将在JavaFX平台退出之前完成(默认情况下,这是用户关闭最后一个窗口时)。