Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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 图像未加载到帧中_Java_Image_Swing_Jframe_Paintcomponent - Fatal编程技术网

Java 图像未加载到帧中

Java 图像未加载到帧中,java,image,swing,jframe,paintcomponent,Java,Image,Swing,Jframe,Paintcomponent,这是我使用的两个不同的文件: public class TestFunc { static BufferedImage img; public static void main(String[] args){ JFrame frame = new JFrame("Display"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSi

这是我使用的两个不同的文件:

    public class TestFunc {

    static BufferedImage img;   
    public static void main(String[] args){


        JFrame frame = new JFrame("Display");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 400);

        ShowImage I = new ShowImage();
        frame.getContentPane().add(I);
        frame.setVisible(true);

    }
}
另一个:

public final class ShowImage extends JPanel{

Image image;

public ShowImage(){

    super();
    image = Toolkit.getDefaultToolkit().getImage("Sunset.jpg");

}

public void paintComponent(Graphics g){
    g.drawImage(image, 0, 0, this);

}

 }
但是,框架上没有显示任何内容,并且显示为空白。我对这个很陌生,搞不懂


谢谢。

尝试在JLabel中使用图像图标:

JFrame frame = new JFrame("Display");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 400);
        frame.setVisible(true);

        JPanel jp = new JPanel();
        frame.add(jp);
        jp.add(new JLabel(new ImageIcon("d:\\temp\\me.JPG")));

        frame.pack();

事实上,它写下来没有什么问题——它应该可以正常工作。运行程序时,当前目录中的“Sunset.jpg”是有效图像吗?是的,我也尝试了不同的图像,我不确定为什么它不显示。即使我的目录中存在图像,也需要完整路径名。那就行了。是因为不同的包裹吗?(实际上只有一个包中的所有工作文件现在都在其中)在类路径上找不到映像。该路径是相对于当前工作目录的文本路径,即键入
java TestFunc
时所处的目录。如上所述,文件必须位于工作目录中。如果您对在类路径上查找图像感兴趣,请查看
ClassLoader.getResource()
和类似的方法。@Andrew yeah这些类都在同一个包
frame.setSize(600400)//坏的
一旦
frame.pack()变为冗余//调用good
+对于
ImageIcon
pack()。谢谢不管怎样,与先前的方法有什么区别?是的,删除了调整大小。看起来图像不是你期望的位置,或者至少没有被搜索到你期望的位置。检查路径。好吧,最好的补充是查看SWING官方教程。它有很多有用的东西,而且它的模块化非常好,比如你只能查看你需要的部分,并且仍然能对如何使用它有一个好的想法。以下是图片部分: