2016-10-24 4 views
-1

프로젝트가 maven, javafx 및 fxml입니다. 하나의 기본 BorderPane, welcome.fxml 및 창, ready.fxml이 있습니다.JavaFX 다른 창과 동일한 텍스트 영역

내 시작 방법은;

@Override 
public void start(Stage primaryStage) throws Exception { 

    try { 
     Pane root = (Pane) FXMLLoader.load(getClass().getResource("welcome.fxml")); 
     Scene scene = new Scene(root, 640, 480); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } catch (Exception e) { 
     makeAlert(e, false); 
    } 
} 

지금, 나는 나의 welcome.fxml에 버튼이 있고, 나는 ready.fxml 내 BorderPane의 중심을 변경하고 싶습니다. 여기 내 버튼 핸들러입니다.

@FXML 
private void buttonHandler() throws IOException, InterruptedException { 


    stage = (Stage) myButton.getScene().getWindow(); 
    Pane sub = (Pane) FXMLLoader.load(getClass().getResource("../ready.fxml")); 
    BorderPane root = (BorderPane) FXMLLoader.load(getClass().getResource("../welcome.fxml")); 
    root.setCenter(sub); 

    //Scene scene = new Scene(root, 640, 480); 
    //stage.getScene().setRoot(root); 
} 

UPDATE : 여기 @James_D 눈치로, 내 컨트롤러에 다시 welcome.fxml로드 그래서, 내 모든 장면의 변경 사항은 센터의 insted, 내 실수입니다.

올바른 방법은 다음과 같습니다.

EDITED : 자바 코드가 추가되었습니다.

+0

가 왜이 장면의 전체 루트를 교체하는 컨트롤러의

<!-- imports, etc... --> <BorderPane fx:id="root" fx:controller="..." xmlns:fx="..." ... > <!-- ... --> </BorderPane> 

그리고 당신은 국경의 중심을 바꾸려면 창유리? 그것이 그대로, 당신의 질문은 정말로 대답에 도움이되지 않습니다 ... 당신이 [MCVE]를 만들고 그것을 포함시키기 위해 당신의 질문을 편집하는 것이 좋습니다. 당신이받는 행동이 당신이 원하는 행동과 어떻게 다른지 설명하십시오. –

+0

이걸 실행 한 후,'root.setCenter (newPane);'센터가 변경되지 않아서 rootScene을 대체합니다. 방금 JavaFX를 배우기 시작했습니다. 제 알지 못해 죄송합니다. –

+0

그러면 우리에게 보여주지 않은 코드에서 뭔가 잘못하고있는 것입니다. 실망스러운 JavaFX에 대해 잘 모르는 것은 아닙니다. 사용자가 대답해야 할 정보가 없어도 질문을 게시 한 것입니다. –

답변

1

기존의 테두리 창의 중심을 업데이트하고 새 테두리를 만들고 새 테두리를 설정하지 말아야합니다.

테두리판을 일반적인 방법으로 컨트롤러에 삽입하면됩니다. 그래서 welcome.fxml의 루트 요소에 fx:id을 추가

public class Controller { /* or whatever name you have, again, you can't be bothered to post a MCVE */ 

    @FXML 
    private BorderPane root ; 

    @FXML 
    private void buttonHandler() throws IOException { 
     Pane sub = (Pane) FXMLLoader.load(getClass().getResource("../ready.fxml")); 
     root.setCenter(sub); 
    } 

    // ... 
}