2017-04-23 10 views
0

ねえねえGUIを使用するのは、ボタンをクリックすると、そのウィンドウに渡されたオブジェクトの属性のテキストフィールドを含む新しいウィンドウが開き、ユーザーは新しいウィンドウのボタンをクリックし、オブジェクトの属性はテキストフィールドにある値で更新されます。javafxの別のコントローラに渡されたときにオブジェクトを更新する方法は?

ウィンドウがこのコードは

public void openwindow(){ 

    FXMLLoader loader= new FXMLLoader(getClass().getResource("subWindow.fxml")); 
      Stage stage=new Stage(StageStyle.DECORATED); 

      stage.setScene(new Scene((Pane) loader.load())); 

      ParameterssubWindowController controller= loader.<ParameterssubWindowController>getController(); 

      controller.initData(A); 

      stage.show(); 

} 

この機能はサブウィンドウを開き、サブウィンドウに存在する機能initData()を実行し実行します。この機能をクリックするとボタンがあるメインウィンドウを言うことができます我々が持っていると言うことができますコントローラは、これまで私たちは、オブジェクト `クラスの合格した2つのテキストフィールドを開くと、その Uのデフォルトの高さと重量を表示する時にようサブウィンドウは身長と体重と呼ばれる2つのテキストフィールドが含まれてい

public class Dog { 

public double height=2; 
public double weight=3; 

} 

serはこれらの値を変更し、更新ボタンをクリックしてAの高さと重量の値を更新することができます。

subWindowController

import javafx.fxml.FXML; 
    import javafx.scene.control.TextField; 

    /** 
    * 
    * @author akhil kumar 
    */ 
    public class ParametersCatchmentController { 

     @FXML 
     private TextField weight; 
     @FXML 
     private TextField height; 



     public void initData(Dog A){ 

      weight.setText(String.valueOf(A.weight)); 
      height.setText(String.valueOf(A.height)); 


     } 


     public void update(){ 
      /** this function is linked to the update button upon clicking this 
       A.height=Double.parseDouble(height.getText()); 
       A.weight=Double.parseDouble(weight.getText()); 
       but since A is a local parameter of initData not able to access A in update to change the values 
      **/
     } 
    } 

更新()関数は、この

A.height=Double.parseDouble(height.getText()); 
      A.weight=Double.parseDouble(weight.getText()); 

をクリックすると、更新ボタンにリンクされているが、AがinitDataのローカルパラメータがあるので、私はそれを使用することはできませんよ

サブウインドウを閉じると、オブジェクトAはユーザーによって与えられた新しい値を持つはずです。したがって、それぞれが4と5を与えた場合、A.height = 4となります。 A.weight = 5

どうすればよいですか?

答えて

0

コピーし、あとでそれにアクセスできるように、インスタンスフィールドにメソッドに渡されたオブジェクト:

public class ParametersCatchmentController { 

    @FXML 
    private TextField weight; 
    @FXML 
    private TextField height; 

    private Dog a ; 

    public void initData(Dog a){ 

     weight.setText(String.valueOf(a.weight)); 
     height.setText(String.valueOf(a.height)); 

     this.a = a ; 
    } 


    public void update(){ 
     a.height=Double.parseDouble(height.getText()); 
     a.weight=Double.parseDouble(weight.getText()); 
    } 
} 
関連する問題