JavaFX如何改变阶段
我正在使用Netbeans 7.2和Scene Builder 1.0开发一个JavaFX应用程序。我已经设置好了主屏幕,我想要它,所以我点击一个按钮,它会关闭主窗口并打开另一个。main Stage对象位于main类中,但controller类是独立的,无法访问它,因为它不是静态的,并且位于不同的类中。如何更改场景或舞台?找到项目FXML LoginDemo,这就是您需要的。为了快速参考,我在这里复制粘贴主java类;)JavaFX如何改变阶段,java,netbeans,javafx,scene,scenebuilder,Java,Netbeans,Javafx,Scene,Scenebuilder,我正在使用Netbeans 7.2和Scene Builder 1.0开发一个JavaFX应用程序。我已经设置好了主屏幕,我想要它,所以我点击一个按钮,它会关闭主窗口并打开另一个。main Stage对象位于main类中,但controller类是独立的,无法访问它,因为它不是静态的,并且位于不同的类中。如何更改场景或舞台?找到项目FXML LoginDemo,这就是您需要的。为了快速参考,我在这里复制粘贴主java类;) 您也可以这样做: 这样修改controller.java Stage t
您也可以这样做: 这样修改controller.java
Stage thisStage;
public void setStage (Stage stage){
thisStage = stage;
}
public void showStage(){
thisStage.setTitle("Titel in der MainController.java geändert");
thisStage.show();
}
重要的是不要在initialize方法中使用此阶段
通过以下方式修改Mainclass:
@Override
public void start(Stage stage) throws Exception {
URL location = getClass().getResource("Main.fxml");
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(location);
fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());
Parent root = (Parent) fxmlLoader.load(location.openStream());
Scene scene = new Scene(root);
stage.setScene(scene);
MainController mainController = fxmlLoader.getController();
mainController.setStage(stage);
mainController.showStage();
}
您可以下载一个示例projekt(netbeans)。我在这里可能会说类似的话,但我是这样做的: (在本例中,我正在从Login.fxml转换到Home.fxml) 在LoginController.fxml类中,我创建了以下方法:
@FXML
private void login(javafx.event.ActionEvent event) throws IOException
{
if(pwf1.getText().equals("dolphin"))
{
Parent blah = FXMLLoader.load(getClass().getResource("Home.fxml"));
Scene scene = new Scene(blah);
Stage appStage = (Stage) ((Node) event.getSource()).getScene().getWindow();
appStage.setScene(scene);
appStage.show();
}
else
{
label1.setText("Password is incorrect. Please Try Again");
}
}
就这样 根据您的问题,最近我正在为JavaFX开发一个与iOS等效的NavigationController,使用推送和关闭视图的最简单思想 让我与社区分享代码: 这个想法,是要有一个非常非常简单的环境来帮助你在屏幕之间切换
希望对您有所帮助。谢谢这正是我要找的!现在这样对吗?我的意思是,我可以使用这个并在应用类之外调用.replaceSceneContent吗?或者在今天(2015年),是否有一种正确的方法来实现阶段间的转变?谢谢=)我如何在控制器类中使用它?或者我可以只在主应用程序中使用这个吗?这个答案很旧,现在已经过时了:(链接断了,你能给另一个吗?
@FXML
private void login(javafx.event.ActionEvent event) throws IOException
{
if(pwf1.getText().equals("dolphin"))
{
Parent blah = FXMLLoader.load(getClass().getResource("Home.fxml"));
Scene scene = new Scene(blah);
Stage appStage = (Stage) ((Node) event.getSource()).getScene().getWindow();
appStage.setScene(scene);
appStage.show();
}
else
{
label1.setText("Password is incorrect. Please Try Again");
}
}