2017-05-02 7 views
-1

他のコントローラに文字列値を取得するために何をすべきか理解できません。私は他の質問を検索しましたが、解決策を適用することができませんでした。なぜなら、いくつかの回答は私にとっては非常に混乱しているようです。 あるコントローラーで見つかったコンボボックスの値を別のコントローラーのテキストフィールドに転送する必要があります。 コントローラクラスからオブジェクトを作成してテキスト値を設定しようとしましたが、失敗します。ここコントローラの文字列の値を別のコントローラに取得

は、コントローラクラスのいずれかのコードでは、(他のコントローラは、ちょうど変数名を持っている)である。

String name_val = item.getValue().toString(); //controller1 item value 
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("contoller2.fxml")); 
Parent root1 = (Parent) fxmlLoader.load(); 

//set value to a textfield in controller2.fxml 


Stage stage_completed = new Stage(); 

stage_completed.setScene(new Scene(root1)); 
stage_completed.show(); 

は、任意の助けに感謝します!

ありがとうございました!

+0

"それが失敗したが、" ...どう?実際に何が起こるのですか?あなたは "値をテキストフィールドに設定する"(おそらくあなたがロードしたFXMLのためのコントローラのメソッドを呼び出すことを含む)というコードを表示して、そのコントローラから対応するメソッドをポストすることができますか? –

+0

ちょっと@James_Dなので、(親root1とstage文の間の)クラスからオブジェクトを作成してプロパティ値を設定すると、次のようなエラーが発生します: CompleteformController c = new CompleteformController(); c.complete_title.setText(name_val); 他のコントローラには他の方法はありません。それは私が制御しようとしているテキストフィールド名を保持しているだけです。そこに何かを追加する必要がありますか? – codeorange

+0

独自のインスタンスを作成する場合、そのインスタンスはコントローラではありません(クラスの別のインスタンスです)。 FXMLローダーからコントローラを取得する必要があります。再度、質問に使用しようとしているコードを投稿してください。 –

答えて

0

ソリューション:

String name_val = item.getValue().toString(); //controller1 item value 
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("contoller2.fxml")); 
Parent root1 = (Parent) fxmlLoader.load(); 

//solution start 
CompleteformController myControllerHandle = fxmlLoader.getController(); 
      myControllerHandle.complete_title.setText(name_val); 
//solution end 

Stage stage_completed = new Stage(); 

stage_completed.setScene(new Scene(root1)); 
stage_completed.show(); 
関連する問題