私はそれぞれがビューを表す2つのFXML
文書を持っているを取得し、のは彼らView1
とView2
を呼びましょう、と私はTabPane
の内側にそれぞれ別々のTab
で1、(Tab1
とTab2
)を配置しています。私はTab2
へTab1
から私のTabPane
のselectedItem
を切り替えますイベントを持っているView1
のController1
で今のJavaFX:ノード
。私の質問は、私は一般的にController1
から私のTabPane
にアクセスする方法です。どのようにNode
をJavafx
に検索しますか?
編集 View1を
<VBox fx:controller="controllers.Controller1">
<Button onAction="#openView2"/>
</VBox>
Controller1
public class Controller1{
public void openView2(){
//What should I do here
}
}
MAINVIEW
<TabPane fx:id="tabPane" fx:controller="controllers.MainController"/>
メインコントローラ
public class MainController implements Initializable {
@FXML
public TabPane tabPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
try {
tabPane.getTabs().add(createView1Tab());
tabPane.getTabs().add(createView2Tab());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected Tab createView1Tab() throws IOException {
Tab tab = new Tab();
tab.setContent(FXMLLoader.load(getClass().getResource("/views/View1.fxml")));
return tab;
}
protected Tab createView2Tab() throws IOException {
Tab tab = new Tab();
tab.setContent(FXMLLoader.load(getClass().getResource("/views/View2.fxml")));
return tab;
}
}
一般に、コントローラ内のあるビューから別のビューにアクセスすることはできません。代わりに、観測可能なデータを変更し、必要な場所でそれらのデータを観察してください。問題を示す[MCVE]で質問を編集することができれば、ここで実際の回答を提供する方が簡単です。 –
編集していただきありがとうございますが、それを校正してタイプミスを修正できますか? 'openView1()'は 'openView2()'であるべきですか?MainViewの 'mainController'は' MainController'であると仮定していますか? –