2017-06-04 94 views
0

这段代码有什么问题? 我很困惑! 我想在主舞台上改变我的场景。在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

这将不会编译,会吗? –

+0

@James_D我知道但我该怎么办? – Mohammasd

+0

您无法创建指定两个双打的“KeyValue”。你没有得到一个编译错误,告诉你?你需要一个'WritableValue' - 通常是'Property'。你究竟在做什么? –

回答

3

如果你想动画舞台的宽度牵着你的新场景,你可以使用一个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(); 
    } 
} 

也许更好的做法是用夹子逐渐显露出新场景:

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

非常感谢你 – Mohammasd