如何访问icon.png文件而不在classloader.getsystemresource()中指定整个路径“main/res/images/icon.png”?我想要像images/icon.png这样的东西。这是project explorer main.java:
package main.java.OOP20.alt.sim.View;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.image.Image;
import java.awt.*;
public class Main extends Application {
public static final double PROPORTION = 1.5;
@Override
public void start(final Stage primaryStage) throws Exception {
final Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
final double width = dimension.getWidth() / PROPORTION;
final double height = dimension.getHeight() / PROPORTION;
final Parent root=FXMLLoader.load(
ClassLoader.getSystemResource("main/res/layouts/sample.fxml")
);
primaryStage.setTitle("Title");
primaryStage.setScene(new Scene(root, width, height));
primaryStage.getIcons().add(
new Image(ClassLoader.getSystemResource("main/res/images/icon.png").toString())
);
primaryStage.show();
}
public static void main(final String[] args) {
launch(args);
}
}
1条答案
按热度按时间wz8daaqr1#
您可以通过使用获取fxml或png文件的url
Class<T>#getResource()
. 应使用以下解决方案:对于fxml文件:
对于png文件:
注意:如果要从静态方法中的资源文件夹加载任何外部资源(fxml、png等),则必须使用
Main.class.getClass()
而不是getClass()
. 它保证资源将相对于该类加载,而不是相对于子类加载。