如何在我的应用程序的java fx 2.0中更改阶段标题栏上的图标

如何在我的应用程序的java fx 2.0中更改阶段标题栏上的图标,java,javafx,javafx-2,javafx-8,stage,Java,Javafx,Javafx 2,Javafx 8,Stage,我已经试过了 stage.getIcons().add(new Image("attuncore.jpg")); 但是我不知道出了什么问题 请帮忙。提前谢谢。您的图像大小正确吗?Javadoc声明: 公共最终观察列表getIcons() 获取要在窗口装饰中使用的图标图像,以及 最小化。图像应该是同一图像的不同大小,并且 将选择最佳尺寸,例如16x16、32、32 通过将独立工作目录的属性设置为主映像所在的包,我找到了解决方案 您可以从类路径加载图像,如下所示: new Image(XYZ.

我已经试过了

 stage.getIcons().add(new Image("attuncore.jpg")); 
但是我不知道出了什么问题


请帮忙。提前谢谢。

您的图像大小正确吗?Javadoc声明:

公共最终观察列表getIcons()

获取要在窗口装饰中使用的图标图像,以及 最小化。图像应该是同一图像的不同大小,并且 将选择最佳尺寸,例如16x16、32、32


通过将独立工作目录的属性设置为主映像所在的包,我找到了解决方案

您可以从类路径加载图像,如下所示:

new Image(XYZ.class.getResourceAsStream("/xyz.png"))
其中XYZ是某个类名(可能是从中加载图像的类名),XYZ.png是图像文件的名称,放在类路径中包含的目录(或JAR文件)中


如果要将图像放在源文件旁边,则必须省略/字符。您的IDE需要配置为将资源(如*.png)从src复制到bin目录,然后。但这应该是标准行为。

完整程序(对于初学者:)此程序设置堆栈溢出图标

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class StackoverflowIcon extends Application {

    @Override
    public void start(Stage stage) {
        StackPane root = new StackPane();
        // set icon
        stage.getIcons().add(new Image("/path/to/stackoverflow.jpg"));
        stage.setTitle("Wow!! Stackoverflow Icon");
        stage.setScene(new Scene(root, 300, 250));
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
输出屏幕快照

更新了JavaFX8

不需要更改代码。它仍然可以正常工作。在Java 1.8(1.8.0_45)中进行了测试和验证。路径可以设置为本地或远程,两者都受支持

stage.getIcons().add(new Image("/path/to/javaicon.png"));


希望能有帮助。谢谢

别忘了导入

import javafx.scene.image.Image;

Image icon = new Image(getClass().getResourceAsStream("myicon.png"));
stage.getIcons().add(icon);

用图标替换
“myicon.png”
。在本例中,它与您的java类位于同一文件夹中。

对于有以下问题的人:

无效URL:找不到无效URL或资源

最好的解决方案是制作新的包,即image.icons并将.png图像移到那里。然后你只需要写:

Image image = new Image("/image/icons/list.png");
primaryStage.getIcons().add(image);

我希望这能帮助别人

如果有问题,请将错误消息附加到您的问题中。我猜没有找到attuncore.jpg。问题是我没有收到任何错误。SO中也有类似的问题。请查看下面的链接,谢谢Sergey,但我认为图像大小不会影响这一点。但是,是的,我最终通过将独立工作目录的属性设置为main和image所在的包得到了解决方案。有一大堆类似的问题,例如:我想知道为什么没有人投票给你,谢谢你的回答,尺寸重要吗?c:答案很好,大小似乎无关紧要。
Image image = new Image("/image/icons/list.png");
primaryStage.getIcons().add(image);