2017-09-20 8 views
0

는 내가 hashmap<String, Node>으로 주요 파일에 화면을 저장하고 내가 갈 때까지 모든 좋은 자바 FX는 IllegalArgumentException (이미 다른 장면의 루트로 설정)

Main screen > Login screen 

처럼 보이는 내 응용 프로그램에서 변화하는 장면에 문제가 다시 메인 화면에 로그인 화면에서 여기에 예외 코드, 다시 로그인 화면을로드 할 : 내가 만드는거야 때

java.lang.IllegalArgumentException: [email protected][styleClass=root]is already set as root of another scene 

public static final HashMap<String, Parent> pages = new HashMap<>(); 

@FXML 
private void LogIn(ActionEvent event) { 
    Button button = (Button) event.getSource(); 
    Stage stage = (Stage) button.getScene().getWindow(); 
    if(stage.getScene() != null) {stage.setScene(null);} 
    Parent root = MyApplication.pages.get("LoginPage"); 
    Scene scene = new Scene(root, button.getScene().getWidth(), button.getScene().getHeight()); 
    stage.setScene(scene); 
} 

작동 새로운 anchorpane

Parent root = new AnchorPane(MyApplication.pages.get("LoginPage")); 

그러나 나는 같은 단계

답변

1

예외 일하고 있어요 경우 나에게 예외를주는 이유를 이해하려면 꽤 자기 설명입니다 : 앵커 창은 두 개의 서로 다른 장면의 루트가 될 수 없습니다. 대신 새로운 장면마다 시간을 만드는, 단지 기존 현장의 루트를 대체 :

@FXML 
private void LogIn(ActionEvent event) { 
    Button button = (Button) event.getSource(); 
    Scene scene = button.getScene(); 
    Parent root = MyApplication.pages.get("LoginPage"); 
    scene.setRoot(root); 
} 
+0

정말 감사 그게 내 문제 –

+0

@JasonBourne를 해결, 당신은 정답으로이 질문을 표시해야합니다. – Kerry