2017-12-14 18 views
0

私は2つのウィンドウコントローラを持っています。どちらもFXMLファイルを読み込んで画面を表示します。最初のGUIControllerはメインウィンドウで、2番目のウィンドウPackageBuilderが生成されます。このウィンドウの内部にはユーザーが何らかのデータを入力して保存します。別のクラス(例:ChoiceBox)で2番目のウィンドウを初期化する

二ウィンドウがそう(FXMLはリンク)のように、メインウィンドウのボタンを経由して起動されます:

@FXML private void onNewPackage(ActionEvent e){ 
    PackageBuilder pb = new PackageBuilder(owner); // Scene owner 
} 

私はJavaFXのアプリケーションの起動方法と、元のシーンを呼び出すことはできません二級に合格する必要があります考え出し一緒に。だから、私はこれをPackageBuilderの内側に書いています。

public PackageBuilder(Scene owner) { 
    /* Removed redundant setup info */ 
    fstart(owner); 
} 
private void fstart(owner) { 
    Stage window = new Stage(); 
    window.initModality(Modality.APPLICATION_MODAL); 
    FXMLLoader loader; 
    Scene scene; 
    try { 
     loader = new FXMLLoader(getClass().getResource("PackageBuilder.fxml")); 
     scene = new Scene(loader.load()); 
     window.initOwner(owner); 
     window.setScene(scene); 
     window.showAndWait(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

これは、initializeメソッドを呼び出すことができれば、すべてが良いでしょう。しかし、それはできません。では、ChoiceBoxの要素を他の場所に初期化する方法がありますか?

どこか愚かな間違いがあるとします。いつもあります。

+0

1時間前に質問したので、このビデオを見てください。誰も答えませんでした。今、あなたに手伝ってくれるだけの時間がありません。 https://www.youtube.com/watch?v=NgubWgheboI – zlakad

+0

なぜダイアログではなく新しい段階になるのですか? – user1803551

+0

@ user1803551デザインはここでは問題ではありません。実際にこの**を行うことができない場合は、問題になります。 – Felix

答えて

-1

インターフェースを実装することができる初期化するChoiceBoxを有する第二のクラスは:

public class PackageBuilder implements Initializable{ 
    @Override 
    public void initialize(URL url, ResourceBundle rb){ 
     /* Initialize things needed */ 
    } 
} 

メソッドは、クラスのコンストラクタの前に呼び出されます。

+0

これは答えではなく質問の編集であるはずです。 – user1803551

+0

@ user1803551私は自分の質問に答えると答えました。なぜそれが編集を求められるのですか?初期化可能なインターフェイスを実装することがその答えです。 – Felix

+0

投稿した質問に対する回答ではなく、根本的な問題を解決している可能性がありますが、コードに表示される内容はこれとは無関係です(どんな場合でもChoiceBoxはありません)。 – user1803551