私はFXMLで宣言されたTabPaneを持っています。私は新しいタブを動的に追加しようとしています。新しいタブを作成する独自のFXMLで
私はそれらのタブの別のクラスを作成しました:
public class DetailTab extends Tab {
私Controller.javaは新しいDetailTabsを生成し、私のTabPaneに追加されます。DetailTab.java以内
detailsPane.getTabs().add(new DetailTab(title));
、私はDetailTabコンストラクタに渡されたStringに応じて、新しいタブのコンテンツに異なるFXMLファイルを設定しようとしています。
try {
System.out.println("Trying fxml");
this.setContent(FXMLLoader.load(getClass().getResource("tabUserComments.fxml")));
} catch (Exception e) {
e.printStackTrace();
}
これにより、NullPointerExceptionが作成されます。 tabUserComments.fxmlファイルは、DetailTab.javaと共にプロジェクトのルートディレクトリにあります。
これを行うための最善の方法は何ですか?私は、DetailTab自体の中からFXMLファイルにコンテンツを設定することもできますか?可能であれば、コントローラーを使用してタブの内容を設定しないでください。
あなたは部分的な表示が必要なようですが、私はjavafxのサポートと同じバッキングコントローラで異なるfxmlファイルをロードすると、コントローラの新しいインスタンスが作成され、同じインスタンス/状態を共有しません – niceman
必要に応じて、個々のタブのfxmlごとに別々のコントローラを作成してもよろしいですか?私はtabUserComments.fxmlに別のコントローラを割り当てると、例外がクリアされることに気付きました。 しかし、今、私はタブがまだ新しいfxmlデータによって占められていないことを見ています。 – Zephyr
別のfxmlファイルでタブを設定する方が良いでしょうか?私は多くのタブを持つことを予定しており、それぞれの異なるコードをすべて使ってDetailTabクラスを拡張するのではなく、個別にデザインすることを好みます。 – Zephyr