Java 显示图像图标

Java 显示图像图标,java,swing,paint,imageicon,Java,Swing,Paint,Imageicon,我试图在JPanel上显示图像。我使用一个ImageIcon来渲染图像,并且图像与类文件位于同一目录中。但是,没有显示图像,并且没有发生错误。谁能帮我找出我的代码有什么问题吗 package ev; import java.awt.Graphics; import javax.swing.ImageIcon; import javax.swing.JPanel; public class Image extends JPanel { ImageIcon image = new Im

我试图在
JPanel
上显示图像。我使用一个
ImageIcon
来渲染图像,并且图像与类文件位于同一目录中。但是,没有显示图像,并且没有发生错误。谁能帮我找出我的代码有什么问题吗

package ev;

import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class Image extends JPanel {

    ImageIcon image = new ImageIcon("peanut.jpg");
    int x = 10;
    int y = 10;

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        image.paintIcon(this, g, x, y);
    }
}
你应该使用

ImageIcon image = new ImageIcon(this.getClass()
                .getResource("org/myproject/mypackage/peanut.jpg"));

这是程序员之间常见的困惑。这个
getClass().getResource(path)
从类路径加载资源

ImageIcon image=新的ImageIcon(“peant.jpg”)

如果我们只提供图像文件的名称,那么Java就是 正在当前工作目录中查找它。 如果您使用的是NetBeans,那么CWD就是项目目录。你 可以通过以下调用在运行时计算CWD:

System.out.println(新文件(“”.getAbsolutePath())

下面是一个代码示例,您可以在其中自己测试它

package com.zetcode;

import java.awt.Dimension;
import java.awt.Graphics;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

class DrawingPanel extends JPanel {

    private ImageIcon icon;

    public DrawingPanel() {

        loadImage();
        int w = icon.getIconWidth();
        int h = icon.getIconHeight();
        setPreferredSize(new Dimension(w, h));

    }

    private void loadImage() {

        icon = new ImageIcon("book.jpg");
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        icon.paintIcon(this, g, 0, 0);
    }

}

public class ImageIconExample extends JFrame {

    public ImageIconExample() {

        initUI();
    }

    private void initUI() {

        DrawingPanel dpnl = new DrawingPanel();
        add(dpnl);

        // System.out.println(new File("").getAbsolutePath());         

        pack();
        setTitle("Image");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {                
                JFrame ex = new ImageIconExample();
                ex.setVisible(true);                
            }
        });
    }
}
程序使用以下命令运行:

$~/bin/jdk1.7.0_45/bin/java com.zetcode.imageiconample

您可以在我的教程中找到更多信息。

很抱歉,使用getClass()时出现了错误。getResource(路径) $ pwd /home/vronskij/prog/swing/ImageIconExample $ tree . ├── book.jpg └── com └── zetcode ├── DrawingPanel.class ├── ImageIconExample$1.class ├── ImageIconExample.class └── ImageIconExample.java 2 directories, 5 files