为什么我的面板/窗口中没有图片?

时间:2011-06-06 03:24:40

标签: java image swing jframe jpanel

我的代码有什么问题?我只想在我的窗口中有一张图片......

//class ImagePanel:

public class ImagePanel extends JPanel {

    private static final long serialVersionUID = -7664761101121497912L;

    public Image i;

    public ImagePanel(Image i) {
        this.i = i;
    }

    @Override
    public void paintComponents(Graphics g) {
        super.paintComponent(g);        
        g.drawImage(this.i, 0, 0, null);
    }
}

//class Main

public class Main extends JFrame {

    public static void main(String[] args) {

    JFrame frame = new JFrame();
        frame.setSize(1024, 768);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        ImagePanel panel = null;

        try {
            panel = new ImagePanel(ImageIO.read(new File("D:/test.JPG")));
        } catch (IOException e) {
            e.printStackTrace();
        }

        frame.getContentPane().add(panel);
        frame.setVisible(true);
    }
}

只有一个没有图片的窗口:( 有什么问题?是否有一种简单的方法来设置窗口大小==图片大小?

谢谢!

4 个答案:

答案 0 :(得分:5)

您必须覆盖paintComponent(Graphics g)而不是paintComponent s (Graphics g)

答案 1 :(得分:4)

最好的解决方案是使用JLabel。不要重新发明轮子。你不需要做自定义绘画。

但是如果你做自定义绘画,那么你需要将getPreferredSize()方法覆盖为图像的大小,以便布局管理器可以完成它们的工作。

答案 2 :(得分:3)

请阅读有关Icon in Swing的本教程,并将您的图片放入JLabel,但与JPanel

具有相同的方式/功能

答案 3 :(得分:0)

我一点都不熟悉Java窗格,但是在将它添加到内容窗格之前,不需要设置ImagePanel的大小。