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

时间:2012-04-23 06:32:52

标签: java javafx javafx-2 javafx-8 stage

我试过了

 stage.getIcons().add(new Image("attuncore.jpg")); 

但我不知道出了什么问题......

请帮忙。提前谢谢。

6 个答案:

答案 0 :(得分:48)

初学者的完整程序:)此程序设置Stack Overflow Icon。

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);
    }
}

输出Screnshot

JavaFX Screenshot

  

针对JavaFX 8进行了更新

无需更改代码。它仍然可以正常工作。在Java 1.8(1.8.0_45)中经过测试和验证。路径可以设置为本地或远程都支持。

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

OR

stage.getIcons().add(new Image("https://example.com/javaicon.png"));

enter image description here

希望它有所帮助。谢谢!

答案 1 :(得分:5)

您可以像这样从类路径加载图像:

new Image(XYZ.class.getResourceAsStream("/xyz.png"))

其中XYZ是某个类名(可能是您正在加载图像的名称),xyz.png是图像文件的名称,放在类路径中包含的目录(或JAR文件)中。

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

答案 2 :(得分:1)

您的图片尺寸是否正确? Javadoc说:

  

public final ObservableList getIcons()

     

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

答案 3 :(得分:1)

我找到的解决方案是将独立工作目录的属性设置为我的main和image所在的包。

答案 4 :(得分:1)

别忘了进行导入

import javafx.scene.image.Image;

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

"myicon.png"替换为您的图标。在这种情况下,它与您的java类位于同一文件夹中。

答案 5 :(得分:1)

对于那些遇到问题的人:

  

网址无效:找不到无效的网址或资源

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

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

我希望这有助于某人!