图像不在java框架中显示

时间:2011-05-25 14:46:18

标签: java swing graphics bufferedimage drawimage

尝试在java中学习windows编程,想要将图像显示到帧中。这是问题代码:

public static void main(String[] args) throws IOException {
        JFrame frame = new JFrame("hello world");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(200,200);
        Graphics graph = frame.getGraphics();

        BufferedImage image = ImageIO.read(new File("data/image.jpg"));
        graph.drawImage(image, 0,0,frame);
        frame.pack();
        frame.setVisible(true);

    }

我已经看到一些成功的示例子类化Component类并在paint方法中调用Graphics.DrawImage方法。为什么你必须这样做,你不能只抓住与框架相关的Graphics对象并直接绘制图像吗?

2 个答案:

答案 0 :(得分:4)

你不能因为这不是Swing绘画的工作方式。首先,绘画必须在EDT上进行,实现这一目标的首选方法是覆盖paintComponent(..)方法。但是,如果使用full screen mode,可以按照您想象的方式直接绘画。

答案 1 :(得分:3)

无需自定义绘画即可显示图像。请参阅How to Use Icons

本教程还有一节“自定义绘画”。