我正在尝试将图片添加到JTabbedPane的第一个标签中,这是我的代码:
git reset
图像文件与此代码所在的类位于同一位置。但是,出于某种原因,我的图像没有出现。我使用了相同的JLabel并使用了文本而不是图像而且它出现了。有人能给我一些关于这个问题的见解吗?
答案 0 :(得分:1)
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);
答案 1 :(得分:1)
图像文件与此代码所在的类位于同一位置
而不是在当前工作目录中查找文件的JLabel imageLabel = new JLabel(new ImageIcon("track.jpg"));
,您应该使用Class#getResource
,它会向嵌入资源返回URL
。
值得注意的是,存储在应用程序上下文中的资源(即嵌入在Jar内或源代码包内)不能作为"文件"来访问。了。
相反,您可以尝试使用类似......
的内容ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResource("track.jpg"));
加载图片。与ImageIcon
不同,ImageIO.read
如果无法读取图片,则会抛出IOException
,这总是比从ImageIcon
获得的沉默更有用{ p>
如果这不起作用,则需要更多关于应用程序结构的上下文