나는 각자가 된 뷰를 나타내는 두 개의 FXML
문서를 검색,의 그들 View1
및 View2
을 부르 자, 나는이 TabPane
내부에 각각 별도의 Tab
하나, (Tab1
및 Tab2
)을 배치했다. 자바 FX : 노드
View1
의
Controller1
에 나는
Tab2
에
Tab1
에서 내
TabPane
의
selectedItem
전환됩니다 이벤트가 있습니다. 제 질문은 내
TabPane
에 액세스 할 수있는 방법입니다.
Controller1
일반적으로 액세스 할 수 있습니다. Javafx
에 특정 Node
을 어떻게 검색합니까?
편집 뷰 1
<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"/>
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'라고 가정합니까? –