JavaFX应用程序图标

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

假设你的舞台是“舞台”,文件在文件系统上:

stage.getIcons().add(new Image("file:icon.png")); 

根据下面的注释,如果它被包含在一个包含jar包中,您将需要使用以下方法:

 stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png"))); 

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

 stage.getIcons().add( new Image( <yourclassname>.class.getResourceAsStream( "icon.png" ))); 

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

完整的初学者程序:)这个程序设置堆栈溢出图标。

 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截图

更新了JavaFX 8

无需更改代码。 它仍然正常工作。 在Java 1.8(1.8.0_45)中进行了testing和validation。 path可以设置为本地或远程都支持。

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

要么

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

在这里输入图像说明

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

如果你有一个图像文件夹,并保存图标使用这个

 stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("http://img.dovov.comcomparison.png"))); 

如果你是直接从你的包装中使用它不是一个好的做法使用它

 stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("comparison.png"))); 

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

 stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("..http://img.dovov.comcomparison.png"))); 

你怎么看待在你的src目录中创build新的软件包,即image.icons,并在那里移动你的.png图像? 比你只需要写:

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

这个解决scheme对我来说是完美的,但是我不确定它是否正确(这里是初学者)。

你可以在fxml中添加它。 舞台水平

 <icons> <Image url="@../../../my_icon.png"/> </icons> 
 stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png"))); 

如果你的icon.png在资源目录中,并且记得在之前放一个“/”,否则它将不起作用

 stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png" ))); 

您可以使用此方法添加多个不同尺寸的图标。图像应该是同一图像的不同尺寸,并select最佳尺寸。 eg. 16x16, 32,32

我试过这个,它的工作原理:

 stage.getIcons().add(new Image(getClass().getResourceAsStream("..http://img.dovov.comicon.png"))); 
 stage.getIcons().add(new Image("http://img.dovov.comlogo_only.png")); 

将图像文件夹放在src文件夹中并从中获取图像是个好习惯。

在JavaFX的标题栏上插入自己的图标的另一种简单方法是使用以下方法将图像添加到主要阶段:

 Image ico = new Image("resourceshttp://img.dovov.comiconLogo.png"); stage.getIcons().add(ico); 

确保您的导入javafx.scene.image.Image(如果使用netbeans这样的IDE,应该会自动为您完成)。