2017-11-16 8 views
4

私はしばらく検索していましたが、私がしたいことを得ることができませんでした。私はこのスレッド 'Loading new fxml in the same scene'でjavafxのfxmlを切り替えるためにjavafxフレームワークを使用しています。つまり、メインウィンドウがあり、このウィンドウにはMAIN領域とCONTENT領域という2つの異なる領域があります。javafxで複数のfxmlを読み込む

MAIN領域はアプリケーション全体で同じになりますが、CONTENT領域は常に変化します。私のMAIN領域にはツールバーだけがあり、ツールバーのどのボタンをクリックするかによって、CONTENT領域のfxml(および動作)が変わります。

私はすでにその動作を持っており、そのフレームワークを使用して魅力的に動作します。

私のすべてのコンテンツ領域にも独自のメイン領域と独自のコンテンツ領域があることを望みます。第2のMAIN領域で何をするかによって、fxmlとその第2のCONTENT領域の動作も変わります。

私が使用しているフレームワークで十分であるのか、それを使ってやりたいことができるのか分かりません。

あなたは、その機能を利用するのに役立つ別のフレームワークを知っていますか?

ありがとうございます!

+0

ここであなたが何を求めているのかは分かりません。あなたはこのシナリオのために既にあなたのために働いているアプローチを使って試しましたか?もしそうなら、それはうまくいくのですか? –

+0

フレームワークのすべての属性とメソッドが静的であるため、機能しません。また、JavaFXアプリケーションクラスから初期化する必要があります.fxmlを交換して新しい子fxmlをインポートすると、JavaFXアプリケーション自体ではないため、そこから新しいフレームワークインスタンスを初期化することはできません。また、元のフレームワークインスタンスを使用することはできません。前の値を上書きするからです。私はそれを明確にしようとすることができるようにすぐに私の質問を編集しようとします。 – JFValdes

答えて

3

ロードするすべての.fxmlは、独自のコントローラを持つことができます。すべてのコントローラーは、メインのアクションと同じようにカスタムアクションとロードコードを持つことができます。

基本的に、JavaFXはモジュール式です。あなたのメインペインで可能なことがあれば、それはすべての子供にも可能です。

一般に、UIベースのフレームワークでは、それぞれのコンポーネントの階層を反映するコントローラの階層を維持することが賢明です。親コントローラへの参照を渡すなど、子要素の子コントローラを取得する場合は、FXML.load()ショートカットを使用することはできません。

の長い構文を使用する必要があります。
FXMLLoader loader = new FXMLLoader(getClass().getResource("your.fxml")); 
YourPaneType pane = loader.load(); 
YourControllerType controller = loader.getController(); 
関連する問題