JavaFX:使用 fxml 添加应用程序图标

Posted

技术标签:

【中文标题】JavaFX:使用 fxml 添加应用程序图标【英文标题】:JavaFX: Adding Application-Icon with fxml 【发布时间】:2018-02-10 21:30:36 【问题描述】:

我想在我的程序中添加一个应用程序图标。我尝试按以下方式执行此操作,但没有成功:

primaryStage.getIcons().add(new Image(Main.class.getResourceAsStream("lock.png")));
    primaryStage.getIcons().add(new Image(Controller.class.getResourceAsStream("lock.png")));
    final Parent root = FXMLLoader.load(getClass().getResource("passwordGenerator.fxml"));

primaryStage.getIcons().add(new Image("lock.png"));

我也尝试在没有FXML 文件的情况下执行此操作,并且成功了。

如何使用FXML 文件添加应用程序图标?

【问题讨论】:

JavaFX Application Icon的可能重复 你的图片和你的主类在同一个包里? @MenaiAlaEddine 这个答案对我不起作用 @MenaiAlaEddine 我的图片和主类在同一个包中 【参考方案1】:

这里适用于我的解决方案: 主类:

public class JavaFXIcons extends Application 
@Override
public void start(Stage stage) throws Exception 
    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

    Scene scene = new Scene(root);
    stage.getIcons().add(new Image(JavaFXIcons.class.getResourceAsStream("***.jpg"))) ;
    stage.setScene(scene);
    stage.show();


/**
 * @param args the command line arguments
 */
public static void main(String[] args) 
    launch(args);
  

FXML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" fx:controller="javafxicons.FXMLDocumentController">
    <children>
        <Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
        <Label layoutX="126" layoutY="120" minHeight="16" minWidth="69" fx:id="label" />
    </children>
</AnchorPane>

【讨论】:

以上是关于JavaFX:使用 fxml 添加应用程序图标的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX 在没有控制器的 fxml 中包含 fxml

新项目对话框中缺少 JavaFX FXML 应用程序。

JavaFX FXML API 版本警告

无法使用 Gradle 实例化 FXML 加载器

使用FXML在VBox中包装标签文本

如何使用 FXML 在 JavaFX 中创建 CheckBoxTreeItem