我有一个应用程序打开绝对正常,但我没有设置它的图标。我给出路径的图标就在那里,并且在该目录中更改为另一个想象显示图标9/10次,但此图像从未显示。它的地方总有一个问号。所以即使是另一个我知道会起作用的文件(即没有被破坏),为什么它只显示这么少?
以下是MyApplication.java的代码
package MyApp;
import MyApp.Variables.Constants;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Forms/FormMain.fxml"));
primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/img/appicon.png")));
primaryStage.setTitle("MyApp " + Constants.VERSION_NAME + " (" + Constants.RELEASE_ID + ")");
primaryStage.setScene(new Scene(root, 1000, 800));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
以下是关于/ img / to Main.java的项目目录结构:
我已经尝试了所有解决方案here,但没有解决我的问题。
在Ubuntu 16.04上运行IDE的intelliJ IDEA,尽管导出的JAR文件仍然存在问题。
答案 0 :(得分:3)
从磁盘加载数据非常耗时,因此您可以在构造对象时开始加载图标。将它放在构造函数中并将其保存在实例成员中。通常,您需要添加多个图标,因为每个平台都需要自己的大小(对于链接等)。
package MyApp;
import MyApp.Variables.Constants;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
public class Main extends Application {
private Image icon;
public Main() {
icon = new Image(Main.class.getResource("/img/appicon.png").toExternalForm());
}
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Forms/FormMain.fxml"));
primaryStage.getIcons().add(icon);
primaryStage.setTitle("MyApp " + Constants.VERSION_NAME + " (" + Constants.RELEASE_ID + ")");
primaryStage.setScene(new Scene(root, 1000, 800));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
正在运行的应用程序看起来像这样: