繁体   English   中英

将ImageIcon添加到JTabbedPane

[英]Adding ImageIcon to 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);

图像文件与该代码所在的类位于相同的位置

代替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获得的静音有用。

如果此操作不起作用,则将需要有关应用程序结构的更多上下文

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM