JavaFX window 设置标题
JavaFX window setTitle
我有一个主要的 class 如下:
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);
}
}
如何在不关闭 window 并打开一个新的的情况下更新另一个 .java class 的标题?
是的,你可以。在您的 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");
顺便说一句,我会避免调用您的 class Window
,因为那是其中一个 JavaFX classes 的名称。
使用 static
公开属性,仅仅为了公开, 可能被 视为糟糕的设计。您有不同的方法来实现相同的目标,例如,公开 Window class 中设置舞台标题的方法。
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个JavaFX应用;该应用程序需要 运行
多次;您想区分谁在 运行 应用程序
- 注意:注意Main和
的运行ning顺序
控制器 class
- 解决方法:i.在ControllerClass中声明一个private static变量,例如private static String strWho;二.通过提供 getter 方法公开 strWho。例如:public static String getWho(){
return 海峡;
};三.为控制器实施初始化方法,并根据您的需要,在每次 运行 JavaFX 应用程序时分配一个不同的值。例如,@FXML
public无效初始化(){
strWho = "you need to have logic here, to have a distinct value each time you run the app";
}
- 在 Main 启动方法中,就在您调用 stage.show 之前,设置标题。例如:
primaryStage.setTitle(Controller.getWho()));
primaryStage.show();
- 每次您 运行 应用程序时实现 strWho 不同值的逻辑的一种方法:您可以在控制器的初始化方法中有一个 TextInputDialog,通过询问名称等来接受用户输入.
我有一个主要的 class 如下:
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);
}
}
如何在不关闭 window 并打开一个新的的情况下更新另一个 .java class 的标题?
是的,你可以。在您的 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");
顺便说一句,我会避免调用您的 class Window
,因为那是其中一个 JavaFX classes 的名称。
使用 static
公开属性,仅仅为了公开, 可能被 视为糟糕的设计。您有不同的方法来实现相同的目标,例如,公开 Window class 中设置舞台标题的方法。
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个JavaFX应用;该应用程序需要 运行 多次;您想区分谁在 运行 应用程序
- 注意:注意Main和
的运行ning顺序 控制器 class - 解决方法:i.在ControllerClass中声明一个private static变量,例如private static String strWho;二.通过提供 getter 方法公开 strWho。例如:public static String getWho(){ return 海峡; };三.为控制器实施初始化方法,并根据您的需要,在每次 运行 JavaFX 应用程序时分配一个不同的值。例如,@FXML public无效初始化(){ strWho = "you need to have logic here, to have a distinct value each time you run the app"; }
- 在 Main 启动方法中,就在您调用 stage.show 之前,设置标题。例如: primaryStage.setTitle(Controller.getWho())); primaryStage.show();
- 每次您 运行 应用程序时实现 strWho 不同值的逻辑的一种方法:您可以在控制器的初始化方法中有一个 TextInputDialog,通过询问名称等来接受用户输入.