Java 将ImageIcon添加到JTabbedPane
我正在尝试将图片添加到JTabbedPane的第一个选项卡,以下是我的代码:Java 将ImageIcon添加到JTabbedPane,java,jpanel,imageicon,jtabbedpane,Java,Jpanel,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", wel
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);
图像文件与此代码所在的类位于同一位置
而不是jlabelimagelabel=newjlabel(newimageicon(“track.jpg”)
正在当前工作目录中查找文件,您应该使用类#getResource
将URL
返回到嵌入式资源
需要注意的是,存储在应用程序上下文中的资源(即嵌入Jar或源程序包中的资源)不再作为“文件”访问
相反,你可以试着使用像
ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResource("track.jpg"));
加载图像。与ImageIcon
不同,ImageIO.read
会在图像无法读取时抛出IOException
,这总是比从ImageIcon
如果这不起作用,则需要在应用程序的结构上添加更多上下文我尝试过,但图片仍然没有出现。当
图像图标
可以接受文件
引用时,为什么要将文件
引用转换为字符串
?此外,ImageIO.read
通常在MadProgrammer更为可取:这只是因为toAbsolutionPath()返回一个字符串。并且作为ImageIcon接受文件和字符串。为什么要双重转换?艾迪生C:很遗憾听到这个消息。不知道为什么这对你不起作用。当我测试它时,它工作得很好……我尝试使用@MadProgrammer代码,但我的IDE在编译时声明找不到getClass()。我尝试了:className.getClass()、this.getClass()、className.getResource()、this.getResource(),但没有一个能够正确编译。所以,听起来好像您试图从静态
上下文加载图像。。。您可以使用application.getClass()
,但是这假设JTabbedApplication
类与映像位于同一个包中。如果不是,您可以使用从顶部包到图像的绝对路径