2016-04-17 15 views
1

私はパラメータを設定するためにjavaFXのradioButtonを使用しています。javaFXでプライベート変数を設定して取得するには?

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

Application静的launch()方法は、あなたのApplicationサブクラスの新しいインスタンスを作成しますJavaFXのツールキットを開始し、インスタンスそれにstart()を呼び出し作成した。 (start()への呼び出しがFXアプリケーションスレッド上で行われている。)

ですから、launch()への呼び出しによって作成されたインスタンスのフィールドにcomNum値を設定しているが、あなたは(自分で作成したインスタンス上getComNum()を呼び出していますすなわち、別のオブジェクト上に)。したがって、あなたは正しい値を得られません。

launch()メソッド、したがってsetComNum()メソッドは、JavaFXプラットフォームが終了するまで(デフォルトでは、ユーザーが最後のウィンドウを閉じるときに)完了しません。

関連する問題