将ImageIcon添加到JTabbedPane

时间:2017-04-12 19:09:59

标签: java jpanel imageicon jtabbedpane

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

git reset

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

2 个答案:

答案 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获得的沉默更有用

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