2017-06-04 4 views
0

quel est le problème avec ce code? Je suis vraiment confus !! Je voulais changer ma scène dans la scène principale.changer de scène dans javafx

public class SignInController { 
    @FXML 
    TextField SignInPassword; 

    @FXML 
    TextField SignInUsername; 

    @FXML 
    CheckBox RememberMe; 

    public void signUpScene(MouseEvent mouseEvent) throws IOException { 
     Timeline timeline = new Timeline(); 
     Scene SignUpScene = new Scene(FXMLLoader.load(getClass().getResource("sign up.fxml")),700,700); 
     Main.pstage.setScene(SignUpScene); 
     timeline.getKeyFrames().addAll(
       new KeyFrame(Duration.ZERO,new KeyValue(SignUpScene.getWidth(),0.0)), 
       new KeyFrame(Duration.millis(1000.0d),new KeyValue(SignUpScene.getWidth(),700.0)) 
     ); 

     timeline.play(); 
    } 
} 
+0

Cela ne compilera même pas, n'est-ce pas? –

+0

@James_D je sais mais que dois-je faire? – Mohammasd

+0

Vous ne pouvez pas créer de 'KeyValue' spécifiant deux doubles. N'avez-vous pas une erreur de compilation qui vous le dit? Vous avez besoin d'un 'WritableValue' - typiquement un' Property'. Qu'essayez-vous de faire? –

Répondre

3

Si vous souhaitez animer la largeur de la scène en tenant votre nouvelle scène, vous pouvez utiliser un Transition:

public void signUpScene(MouseEvent mouseEvent) throws IOException { 
     Scene SignUpScene = new Scene(FXMLLoader.load(getClass().getResource("sign up.fxml")),700,700); 
     Main.pstage.setScene(SignUpScene); 

     Rectangle clip = new Rectangle(0, 700); 

     Transition animateStage = new Transition() { 
      { 
       setCycleDuration(Duration.millis(1000)); 
      } 
      @Override 
      protected void interpolate(double t) { 
       Main.pstage.setWidth(t * 700.0); 
      } 
     }; 
     animateStage.play(); 
    } 
} 

Peut-être une meilleure approche serait de révéler progressivement la nouvelle scène à l'aide d'un clip :

public void signUpScene(MouseEvent mouseEvent) throws IOException { 

     Parent root = FXMLLoader.load(getClass().getResource("sign up.fxml")); 

     Scene SignUpScene = new Scene(root,700,700); 
     Main.pstage.setScene(SignUpScene); 

     Rectangle clip = new Rectangle(0, 700); 
     Timeline animate = new Timeline(
      new KeyFrame(Duration.millis(1000), 
       new KeyValue(clip.widthProperty(), 700.0)); 
     root.setClip(clip); 
     // when animation finishes, remove clip: 
     animate.setOnFinished(e -> root.setClip(null)); 
     animate.play(); 
    } 
} 
+0

merci beaucoup – Mohammasd