我有一个主要类如下:
public class Window extends Application {
@Override
public void start(Stage foablak) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Foablak.fxml"));
Scene scene = new Scene(root);
foablak.setScene(scene);
foablak.setWidth(900);
foablak.setHeight(700);
foablak.setResizable(false);
foablak.setTitle("Window");
foablak.show();
}
public static void main(String[] args) {
launch(args);
}
}
如何在不关闭窗口并打开新窗口的情况下更新另一个.java类的标题?
答案 0 :(得分:4)
使用static
公开属性,仅仅为了公开,可能被认为是一个糟糕的设计。您可以通过不同的方式实现相同的功能,例如,从Window类中公开设置舞台标题的方法。
public class Window extends Application {
private Stage stage;
@Override
public void start(Stage foablak) throws Exception {
stage = foablak;
Parent root = FXMLLoader.load(getClass().getResource("Foablak.fxml"));
Scene scene = new Scene(root);
foablak.setScene(scene);
foablak.setWidth(900);
foablak.setHeight(700);
foablak.setResizable(false);
foablak.setTitle("Window");
foablak.show();
}
public static void main(String[] args) {
launch(args);
}
public void setStageTitle(String newTitle) {
stage.setTitle(newTitle);
}
}
答案 1 :(得分:1)
是的,你可以。在Application.start()
方法内,保存对您可以在其他位置访问的主Stage
的引用,然后调用Stage.setTitle()
。
class MyApplication extends Application {
public static Stage primaryStage;
@Override
public void start(Stage primaryStage) {
MyApplication.primaryStage = primaryStage;
// ...
}
}
MyApplication.primaryStage.setTitle("New Title");
顺便说一句,我会避免调用你的类Window
,因为这是JavaFX类之一的名称。
答案 2 :(得分:1)
以下可能不是您想要的解决方案,但对某些开发人员可能有用: