2017-04-23 170 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()存在於子窗口有一個按鈕主窗口控制器,該已通過的對象`甲類的

public class Dog { 

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

} 

子窗口包含2個文本字段稱爲高度和重量,從而在打開所述兩個文本框將顯示一 所以u的默認高度和重量ser可以更改這些值並單擊更新按鈕更新高度和重量的值。

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 
      **/
     } 
    } 

update()函數是在點擊該

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()); 
    } 
} 
相關問題