Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX:操作系统dockbar中程序的标题(例如Ubuntu 19.10)_Java_Javafx_X11 - Fatal编程技术网

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{}中设置它,在启动()之前;在主方法中。但没有任何更改:(见上面的代码)。