JavaFX应用程序图标

Seb*_*b77 161 java javafx stage javafx-2 javafx-8

是否可以使用JavaFX更改应用程序图标,还是必须使用Swing完成?

Mic*_*rry 219

假设您的舞台是"舞台"并且文件位于文件系统上:

stage.getIcons().add(new Image("file:icon.png"));
Run Code Online (Sandbox Code Playgroud)

根据下面的评论,如果它包含在一个包含的jar中,你需要使用以下方法:

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
Run Code Online (Sandbox Code Playgroud)

  • 我认为只有当文件在文件系统中时才会起作用,对于更常见的情况,图标包含在jar文件和类路径中,这对我来说不起作用.使用`stage.getIcons()的其他解决方案之一.add(new Image(<yourclassname> .class.getResourceAsStream("icon.png")));`有效. (10认同)
  • 您可以添加不同大小的多个图像,JavaFX将选择最适合的图像.因为您在任务栏中有不同的大小而在标题栏中有不同的大小. (9认同)
  • 此外,如果要将图标安装为应用程序快捷方式,并且您使用WebStart作为部署技术,则可能需要在jnlp文件中设置相应的图标/快捷方式/桌面设置:http://docs.oracle.com /javase/7/docs/technotes/guides/javaws/developersguide/syntax.html (5认同)
  • 请注意,至少在Ubuntu(Unity)上,图标仅用于窗口装饰,但不用于启动器.要使图标可见(而不是丑陋的问号),您需要指定适当的`.dektop`文件.看我的描述**[这里](http://stackoverflow.com/questions/36311638/javafx-ubuntu-stage-dock-icon-wont-work/36316722#36316722)** (2认同)
  • 这仅更改标题栏上的图标,即窗口的左上角。如何更改桌面上的应用程序图标作为快捷方式?在任务栏上? (2认同)

小智 72

我试过这个,它完全有效.代码是:

stage.getIcons().add(
   new Image(
      <yourclassname>.class.getResourceAsStream( "icon.png" ))); 
Run Code Online (Sandbox Code Playgroud)

icon.png与源文件位于同一文件夹下.

  • '&lt;yourclassname&gt; .class'可以替换为'getClass()' (3认同)

Mad*_*ota 67

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

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)

在此输入图像描述

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


小智 8

你可以在fxml中添加它.阶段水平

<icons>
    <Image url="@../../../my_icon.png"/>
</icons>
Run Code Online (Sandbox Code Playgroud)


Rah*_*ngh 6

如果您有一个图像文件夹并保存图标,请使用此文件夹

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/images/comparison.png")));
Run Code Online (Sandbox Code Playgroud)

如果你直接在你的包装中使用它,这不是一个好习惯,请使用它

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("comparison.png")));
Run Code Online (Sandbox Code Playgroud)

如果你有一个文件夹结构,你的图标在里面使用

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("../images/comparison.png")));
Run Code Online (Sandbox Code Playgroud)