【发布时间】:2021-08-07 03:09:11
【问题描述】:
我目前正在开发一个希望在 Windows 和其他操作系统上运行的应用程序。
我遇到了一个问题,从我的程序中的文件夹调用的文件没有出现在 macOS 上,而是出现在 Windows 上。
我所有文件的写入和读取方式与此示例 GUI 代码相同:
public class GUI extends JFrame {
private JLabel imageLabel;
public GUI() {
this.setTitle("test");
this.setSize(500,349);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
imageLabel = new JLabel(new ImageIcon("assets/test.png"));
this.getContentPane().setBackground(new Color(20,50,250));
this.getContentPane().add(imageLabel);
this.setSize(500, 350);
}
}
在 Windows 上,GUI 程序如下所示:
在 MacOS 上,GUI 程序如下所示:
我想补充一点,这些是通过从 Eclipse IDE 导出的 Runnable Jar 文件在操作系统上运行的。正在使用的版本是 JavaSE-1.8。
【问题讨论】:
-
我没有回答您的问题,但 JavaSE-1.8 是 Java 的最新版本,直到版本 9、10、11、12、13、14、15 和 16 出现:)
-
理论上,无论操作系统如何,您的应用程序的行为都应该相同。我怀疑问题是文件读取毕竟显示了窗口 - 还是您看到一些异常弹出?你实际上是如何运行你的 GUI 的?但是我缺少的是(我可能错了):您没有定义任何布局管理器。是 Windows 提供了合适的默认值,而 MacOS 上没有?
-
你能检查文件系统中“assets”和“test.png”的名称吗?你用的是同一种情况吗?
-
是的,我对所有图像都使用相同的大小写。
-
您的资产目录是否在以下路径中:src/main/resources?如果是,请尝试 new ImageIcon("/assets/test.png")
标签: java io operating-system