JavaFX:操作系统dockbar中程序的标题(例如Ubuntu 19.10)
今天我面临以下问题: 我使用方法JavaFX:操作系统dockbar中程序的标题(例如Ubuntu 19.10),java,javafx,x11,Java,Javafx,X11,今天我面临以下问题: 我使用方法setTitle()设置primaryStage的标题。此标题在窗口中正确显示,但当我将光标悬停在OS dockbar中的程序图标上时,我只看到主程序类的路径(请参见下面的屏幕截图)。我怎么能修好它 和。我使用这个代码: @Override public void start(Stage stage) throws IOException { this.stage = stage; instance = this;
setTitle()
设置primaryStage的标题。此标题在窗口中正确显示,但当我将光标悬停在OS dockbar中的程序图标上时,我只看到主程序类的路径(请参见下面的屏幕截图)。我怎么能修好它
和。我使用这个代码:
@Override
public void start(Stage stage) throws IOException {
this.stage = stage;
instance = this;
// App initialization
Parent root = FXMLLoader.load(SlimeBot.class.getClassLoader().getResource("fxml/Main.fxml"));
Scene scene = new Scene(root, 800, 600);
stage.setTitle("SlimeBot - Панель управления");
stage.setScene(scene);
stage.show();
}
正在尝试使用java.awt.Toolkit
中的字段设置标题:
@Getter
private static SlimeBot instance;
static {
try {
Toolkit xToolkit = Toolkit.getDefaultToolkit();
java.lang.reflect.Field awtAppClassNameField = xToolkit.getClass().getDeclaredField("awtAppClassName");
awtAppClassNameField.setAccessible(true);
awtAppClassNameField.set(xToolkit, "SlimeBot - Панель управления");
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws InterruptedException {
launch(args);
}
@Getter
private Stage stage;
@Override
public void start(Stage stage) throws IOException {
this.stage = stage;
instance = this;
// App initialization
Parent root = FXMLLoader.load(SlimeBot.class.getClassLoader().getResource("fxml/Main.fxml"));
Scene scene = new Scene(root, 800, 600);
stage.setTitle("SlimeBot - Панель управления");
stage.setScene(scene);
stage.show();
}
}```
好的。。我在你的链接上尝试了博客文章中的代码,但没有任何更改
@Override
public void start(Stage stage) throws IOException {
this.stage = stage;
instance = this;
// App initialization
Parent root = FXMLLoader.load(SlimeBot.class.getClassLoader().getResource("fxml/Main.fxml"));
Scene scene = new Scene(root, 800, 600);
stage.setTitle("SlimeBot - Панель управления");
try {
Toolkit xToolkit = Toolkit.getDefaultToolkit();
Arrays.asList(xToolkit.getClass().getDeclaredFields()).forEach(s -> System.out.println(s));
java.lang.reflect.Field awtAppClassNameField = xToolkit.getClass().getDeclaredField("awtAppClassName");
awtAppClassNameField.setAccessible(true);
awtAppClassNameField.set(xToolkit, "SlimeBot - Панель управления");
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
stage.setScene(scene);
stage.show();
}
当我运行JavaFX应用程序时,我从X11收到一个小警告:
(java:5232):Gdk警告**:15:35:37.334:XSetErrorHandler()调用时推送了一个Gdk错误陷阱。不要那样做。
好的。。我在你的链接上尝试了博客文章中的代码,但没有任何更改
@Override
public void start(Stage stage) throws IOException {
this.stage = stage;
instance = this;
// App initialization
Parent root = FXMLLoader.load(SlimeBot.class.getClassLoader().getResource("fxml/Main.fxml"));
Scene scene = new Scene(root, 800, 600);
stage.setTitle("SlimeBot - Панель управления");
try {
Toolkit xToolkit = Toolkit.getDefaultToolkit();
Arrays.asList(xToolkit.getClass().getDeclaredFields()).forEach(s -> System.out.println(s));
java.lang.reflect.Field awtAppClassNameField = xToolkit.getClass().getDeclaredField("awtAppClassName");
awtAppClassNameField.setAccessible(true);
awtAppClassNameField.set(xToolkit, "SlimeBot - Панель управления");
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
stage.setScene(scene);
stage.show();
}
当我运行JavaFX应用程序时,我从X11收到一个小警告:
(java:5232):Gdk警告**:15:35:37.334:XSetErrorHandler()调用时推送了一个Gdk错误陷阱。不要这样做。
请将该代码作为文本包含在问题中好吗?好的,请参见上文。请帮助我:(我认为dockbar在应用程序的WM_CLASS X11属性中查找标题。这篇博文很旧,但我认为它可能会引导您走向正确的方向:请将该代码作为文本包含在您的问题中?好的,请参见上文。请帮助我:(我认为dockbar会在应用程序的WM_CLASS X11属性中查找标题。这篇博文已经很老了,但我认为它可能会引导您走向正确的方向:这不是一个答案。堆栈溢出是一个问答网站,而不是一个讨论论坛。因此,如果您发布“答案”,它应该是您问题的答案。这就是为什么您可以编辑您的问题并添加更多详细信息。因此,我建议您编辑您的问题并添加“答案”的文本,然后删除您的答案,因为它不是真正的答案。应该在将应用程序添加到dockbar之前完成代码,可能是在类初始化中(static{…}
)你的应用程序。@Abra,对不起。我在那里才两天:(@JoopEggen,不。我试着在主类中的static{}中设置它,然后在启动()之前;在main方法中设置它。但是没有改变:(见上面的代码。这不是答案。堆栈溢出是一个问答网站,不是一个讨论论坛。所以如果你发布“答案”,它应该是您问题的答案。这就是为什么您可以编辑您的问题并添加更多详细信息。因此,我建议您编辑您的问题并添加“答案”的文本,然后删除您的答案,因为它不是真正的答案。应该在将应用程序添加到dockbar之前完成代码,可能是在类初始化中(static{…}
)你的应用程序。@Abra,对不起。我在那里才两天:(@JoopEggen,不。我试着在主类的static{}中设置它,在启动()之前;在主方法中。但没有任何更改:(见上面的代码)。