在我的程序中,我有一些按钮可以打开一个单独的窗口,但当用户单击另一个按钮时,我希望最后一个阶段关闭,并打开另一个。我通过创建一个静态
Stage
在我的课堂上,如果按下按钮,它会用一个新的舞台替换舞台对象。
然而,当我这样做时,它并没有像我想象的那样替换最后一个窗口,而是会打开一个新窗口,即使两个窗口都连接到同一个静态对象。
现在只要做一件事就可以解决这个问题
stage.close();
然而,在创建新窗口之前,我打开了我的任务管理器,当我发送垃圾邮件时,它开始积累内存,就好像这些窗口仍然存在于我的计算机上,但它们是隐藏的。发生什么事?我如何从记忆中抹去这个幻影阶段,为什么是一样的
阶段
对象是否能够创建多个阶段?
这是一段代码,它重现了我的问题:
private static Stage testStage = null;
@Override
public void start(Stage stage) {
testStage = new Stage();
Button openButton = new Button("open");
openButton.setOnMouseClicked(event -> {
this.start(null);
});
BorderPane root = new BorderPane();
root.setCenter(openButton);
scene = new Scene(root, 500, 500);
testStage.setTitle("test");
testStage.setScene(scene);
testStage.show();
}
我也知道我没有使用stage参数,但这只是我在一个完全不同的类中所做的一个例子。