2014-06-05 4 views
1

JavaFX를 처음 사용합니다. 세로 분할 창으로로드 된 창이 있습니다. 여기 분할 페이지의 왼쪽에는 두 개의 버튼이 있습니다. 각 단추에서 분할 창 오른쪽에 별도의 fxml을로드해야합니다를 클릭하십시오. 그래서 여기서 스크린 샷을 붙입니다. 여기에 검색 버튼이 명중 할 때 지금은 별도의 단계, 별도의 장면에서 개방하고 현재 동일한 단계, 다른 Fxml - Javafx

enter image description here

. 이제 Baselayout 창의 오른쪽에 Searcher를로드해야합니다. baseLayout을로드하는 코드가 있습니다.

@Override 
    public void start(Stage primaryStage) throws Exception { 
     this.primaryStage = primaryStage; 
     this.primaryStage.setTitle("Base Layout"); 
     BaseController.setMlTool(this); 
     FXMLLoader loader = new FXMLLoader(MLTool.class.getResource("view/Base.fxml")); 
     baseLayout = (AnchorPane) loader.load(); 
     Scene scene = new Scene(baseLayout); 

     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

다음은 버튼 클릭시 Searcher를로드하는 코드입니다.

@FXML 
    private void initialize(){ 
     System.out.println("Testing"); 
    } 

    @FXML 
    private void handleSearchButton(){ 
     System.out.println("Handle Button Called"); 

     Stage search = new Stage(); 
     FXMLLoader loader = new FXMLLoader(MLTool.class.getResource("view/Searcher.fxml")); 
     search.setTitle("Searcher"); 
     try { 
      AnchorPane searcherPage = (AnchorPane) loader.load(); 
      Scene scene = new Scene(searcherPage); 
      search.setScene(scene); 
      search.show(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

여기에서는 BaseLayout의 분할 권한 창에서 Searcher를로드하는 방법을 설명합니다. 희망 사항은 확실합니다. 귀하의 도움에 미리 감사드립니다.

답변

1

버튼 클릭을 듣고, 클릭하면 'FXMLLoader.load'를 사용하여 루트 엘렌먼트에 따라로드하고, 패널을 말하고, 오른쪽면에 내용을 할당합니다.

4

오른쪽에서 창을 가져온 다음 fxml을 해당 창의 하위 노드로로드 할 수 있습니다. 스테이지는 모든 시간 동안 동일하며 창에 fxml을로드 할 수 있습니다. 예 : MainWindow.fxml은 perent 창입니다. 스테이지에서로드 할 수 있습니다.

Parent root = FXMLLoader.load(getClass().getResource("MainWindow.fxml")); 
Scene scene = new Scene(root); 
stage.setScene(scene); 
stage.show(); 

이제는 MainWindow.fxml에서 분할 창을 사용했습니다. 버튼 클릭시 fxml을로드 할 위치의 오른쪽에 anchorPan을 삽입하십시오. 그런 다음 앵커 판에 자식으로 fxml을 추가하십시오. 핸들러 방법에

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(fxml)); 
Pane cmdPane = (Pane) fxmlLoader.load(); 
try { 
anchCmdController.getChildren().clear(); 
anchCmdController.getChildren().add(cmdPane); 
fadeIn.playFromStart(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
+0

나는 그것을 시도하고있다. 이 코드 스 니펫을 요구 사항으로 변환 할만큼 명확하지 않습니다. 제 견본을 설명해 주시겠습니까? 제발 .... –

2

이 함께 시도 :

첫번째 선언 anchorpane을. fxml 오른쪽 창에 anchorpane을 anchCmdController 이름과 함께 넣습니다.

@FXML 
private AnchorPane anchCmdController; 

handleSearchButton 이벤트를 업데이트하십시오.

@FXML 
private void handleSearchButton() throws IOException { 
System.out.println("Handle Button Called"); 

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("view/Searcher.fxml")); 
Pane cmdPane = (Pane) fxmlLoader.load(); 
try { 
/* NEED TO DECLARE ANCHOR PANE" */ 
anchCmdController.getChildren().clear(); 
anchCmdController.getChildren().add(cmdPane); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 
관련 문제