Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ImageIcon导入图像?_Java_Image_Swing - Fatal编程技术网

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