将 ImageIcon 添加到 JTabbedPane



我正在尝试将图片添加到JTabbedPane的第一个选项卡中,这是我的代码:

JTabbedPane application = new JTabbedApplication();
JPanel welcomePanel = new JPanel();
JLabel imageLabel = new JLabel(new ImageIcon("track.jpg"));
welcomePanel.add(imageLabel);
application.addTab("WELCOME", welcomePanel);
application.setMnemonicAt(0, KeyEvent.VK_1);

图像文件与此代码所在的类位于同一位置。但是,由于某种原因,我的图像没有出现。我使用相同的 JLabel 并使用文本而不是图像,它出现了。有人可以给我一些关于这个问题的见解吗?

Java 不知道图像直接位于正在运行的类文件旁边。你必须交出绝对的道路。这意味着路径 + 文件名。

这一小段代码将帮助您告诉 Java 图像位于当前工作目录中。

String file = new File("track.jpg").getAbsolutePath();

添加到您的代码截图后,它看起来像这样:

JTabbedPane application = new JTabbedPane();
JPanel welcomePanel = new JPanel();
String file = new File("track.jpg").getAbsolutePath();
JLabel imageLabel = new JLabel(new ImageIcon(file));
welcomePanel.add(imageLabel);
application.addTab("WELCOME", welcomePanel);

图像文件与此代码所在的类位于同一位置

您应该使用 Class#getResource,而不是在当前工作目录中查找文件JLabel imageLabel = new JLabel(new ImageIcon("track.jpg"));,这将返回对嵌入资源的URL

重要的是要注意,存储在应用程序上下文中的资源(即嵌入在 Jar 或源包中(不再作为"文件"访问。

相反,您可以尝试使用类似...

ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResource("track.jpg"));

以加载图像。 与ImageIcon不同,如果无法读取图像,ImageIO.read会抛出IOException,这总是比你从ImageIcon中获得的沉默更有用

如果这不起作用,则需要有关应用结构的更多上下文

最新更新