Java 如何使用ImageIcon导入图像?
这是我的代码,显然我有两个问题:Java 如何使用ImageIcon导入图像?,java,image,swing,Java,Image,Swing,这是我的代码,显然我有两个问题: package test; import javax.swing.ImageIcon; import javax.swing.JPanel; import java.awt.Component; public class something { public static void main(String[] args) { ImageIcon icon = new ImageIcon("src/icon.png",("What a great im
package test;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import java.awt.Component;
public class something {
public static void main(String[] args) {
ImageIcon icon = new ImageIcon("src/icon.png",("What a great image"));
JPanel window = new JPanel();
window.setLocation(100,100);
window.setSize(300, 500);
window.setVisible(true);
}
所以我不知道为什么JPanel不会显示自己,我导入的图像正确吗?我已经创建了图标并将其放置在SRC文件夹中。如果我没有正确导入,那么如何导入?这个问题也适用于图形Swing,因为我很快就有兴趣了解它。一个JPanel只能放在像JFrame这样的重量级组件上,如果你查阅一些基本的Swing教程,你可以得到GUI的基本布局。或者,您可以使用与NetBeans IDE一起提供的GUI创建者。 要添加图像,您需要执行以下操作
BufferedImage myPicture = ImageIO.read(new File("path-to-file"));
JLabel picLabel = new JLabel(new ImageIcon(myPicture));
add(picLabel);
所以我不知道为什么JPanel不会现身
您尚未将其添加到任何可以显示的内容中。JPanel
只是一个普通的容器,它允许您在其中添加其他组件
您需要某种类型的窗口来实际显示此容器,例如
JPanel window = new JPanel();
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(window);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
请通读以了解更多详细信息
我已经创建了图标并将其放置在SRC文件夹中。如果我是
没有正确导入,那么如何导入
这是一个复杂的问题,因为您已将图像添加到src
目录,它会更改图像加载方式的上下文。本质上,它变成了一种嵌入式资源
所以不是用
ImageIcon icon = new ImageIcon("src/icon.png",("What a great image"));
你需要使用更像
ImageIcon icon = new ImageIcon(something.getClass().getResource("icon.png"),("What a great image"));
反而
您可能会发现,通读、、很有帮助谢谢!我的朋友们找不到一个好办法向我解释为什么JPanel不起作用,但这似乎是一把击中钉子的锤子!现在我遇到了一个新的问题,因为我得到了以下错误:“sun.awt.image.urlmagesource.getConnection(urlmagesource.java:115)的java.lang.NullPointerException位于sun.awt.image.urlmageSource.getDecoder(urlmageSource.java:125)的sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)在sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)在sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)上“尝试使用ImageIcon-icon=new-ImageIcon(something.getClass().getResource(/icon.png)),(“多么棒的图像”)代码>相反,很抱歉回复/评论太晚(正在吃饭)。因此,something.getClass().getResource不起作用(显然,我无法对这可能意味着什么进行静态引用),所以我删除了它。框架打开了,但图像仍然没有显示。我应该使用BuffereImage和Graphics吗?对不起,something.class.getResource(…)
:P