我有两个场景,场景1上有一个标签,上面只写着“This is scene 1”,还有一个按钮,上面写着“按我进入场景2”。场景2和场景1类似,但是标签和文字相反。
问题很简单,或者至少应该是简单的。我可以用JavaFX的方式解决这个问题,但是好像无法使用FXML的方式解决。
我有一个主类 -
问题很简单,或者至少应该是简单的。我可以用JavaFX的方式解决这个问题,但是好像无法使用FXML的方式解决。
我有一个主类 -
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class ManinApp extends Application
{
Stage primaryStage;
private AnchorPane rootLayout;
public static void main(String [] args)
{
launch(args);
}
public void start(Stage primaryStage)
{
this.primaryStage = primaryStage;
this.primaryStage.setTitle("Two Scenes");
initRootLayout();
//showSecondScene();
}
public void initRootLayout()
{
try
{
FXMLLoader loader = new FXMLLoader();
loader.setLocation(ManinApp.class.getResource("Scene1.fxml"));
rootLayout = (AnchorPane) loader.load();
Scene scene = new Scene(rootLayout);
primaryStage.setScene(scene);
primaryStage.show();
}
catch(IOException e)
{
e.printStackTrace();
}
}
/**
public void showSecondScene()
{
try
{
FXMLLoader loader = new FXMLLoader();
loader.setLocation(ManinApp.class.getResource("Scene2.fxml"));
AnchorPane secondScene = (AnchorPane)loader.load();
rootLayout.getChildren().add(secondScene);
}
catch(IOException e)
{
e.printStackTrace();
}
}
*/
public Stage getPrimaryStage()
{
return primaryStage;
}
目前,showSecondScene()已被注释掉。我的理解是您还需要一个Controller类将代码与SceneBuilder连接起来?
采用FX方式的解决方案如下:
btnscene1.setOnAction(e ->
{
if(e.getSource() == btnscene1)
thestage.setScene(scene2);
else
thestage.setScene(scene1);
});
btnscene2.setOnAction(e ->
{
if(e.getSource()==btnscene2)
thestage.setScene(scene1);
else
thestage.setScene(scene2);
});
对于格式问题表示抱歉!
我如何使用控制器类来操作在主类中声明的主舞台和两个场景?
希望我的表述清晰易懂。