[英]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.