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

Bip*_*ari 13 java javafx stage javafx-2 javafx-8

我试过了

 stage.getIcons().add(new Image("attuncore.jpg")); 
Run Code Online (Sandbox Code Playgroud)

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

请帮忙.提前致谢.

Mad*_*ota 49

启动器的完整程序:)此程序设置堆栈溢出图标.

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出Screnshot

JavaFX截图

针对JavaFX 8进行了更新

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

stage.getIcons().add(new Image("/path/to/javaicon.png"));
Run Code Online (Sandbox Code Playgroud)

要么

stage.getIcons().add(new Image("https://example.com/javaicon.png"));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

希望能帮助到你.谢谢!!


小智 5

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

new Image(XYZ.class.getResourceAsStream("/xyz.png"))
Run Code Online (Sandbox Code Playgroud)

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

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


Ser*_*nev 1

您的图像尺寸正确吗?Javadoc 指出:

公共最终 ObservableList getIcons()

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