页面切换
JavaFX多个页面(Stage)之间的切换的实现的基本思路:
构建一个主Stage和多个副Stage页面(构建方式基本上市一样的);在主Stage中设置某些控件的动作,这些动作通过触发副Stage页面的stage.show和stage.hide来实现副Stage的打开和关闭(或者将关闭动作绑定在副Stage的控件上);主Stage和副Stage之间的数据交换,可以通过在主Stage或副Stage上储存相应的数据类,通过其进行数据交换(交换动作一般发生在副Stage打开或关闭的时间);
这种思路也可以用于实现自定义的弹窗;
带有数据交换的弹出窗口:
以下是一个示例:
主页面
【Primary - Controller】
public class Controller {
@FXML Button newPage; //弹窗页面触发按钮
public void initialize(){
//弹出新页面
newPage.setOnAction((ActionEvent e)->{
Popup.Data data = Popup.showDialog(); //弹出窗口,并获取交换数据
//控制台打印交换数据
System.out.println(data.getId()+"\n"+data.getName()+"\n"+data.getCity());
});
}
}
Popup页面
【Popup - Main】
public class Popup extends AnchorPane {
private static Popup popup; //本类实例内部封装在静态数据域,
private Data data ; //对外交换输出使用的自定义数据结构
private Controller controller;
priavte Stage primaryStage;
//本类实例内部封装在静态数据域,构造方法私有
private Popup(){
try{
FXMLLoader fxmlloader = new FXMLloader(getClass().getResource("myDialog.fxml"))
Parent root = FXMLLoader.load();