试图打印没有框架的图像

时间:2013-03-12 21:12:22

标签: java image file file-io rendering

public class Main{
    public static void main(String []args){
        JLabel c=new JLabel();
        c.setIcon(new ImageIcon("picture.png"));
        JFrame frame = new JFrame();
        frame.setBackground(Color.WHITE);
        frame.setUndecorated(true);
        frame.getContentPane().add(c);
        frame.pack();
        BufferedImage bi = new BufferedImage(c.getWidth(), c.getHeight(), BufferedImage.TYPE_INT_ARGB);
        Graphics2D graphics = bi.createGraphics();
        c.print(graphics);
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        graphics.dispose();
        frame.dispose();
    }
}

大家好!我只是试图在屏幕上打印没有任何框架的图像。我认为,这段代码应该将图像打印到屏幕上;等待两秒然后处理掉它。我做错了什么?

B.T.W我没有任何错误,程序只能活2秒然后死亡。

2 个答案:

答案 0 :(得分:1)

您的图片在JLabel中。如果JLabel所在的框架没有显示,为什么要在屏幕上打印?

您已经将框架设置为未修饰的。在框架上设置可见效果。

答案 1 :(得分:0)

  

您最后不需要图形部分,也忘记调用setVisible(true);

public class Main{
    public static void main(String []args){
        JLabel c=new JLabel();
        c.setIcon(new ImageIcon("picture.png"));
        JFrame frame = new JFrame();
        frame.setBackground(Color.WHITE);
        frame.setUndecorated(true);
        frame.getContentPane().add(c);
        frame.pack();
        frame.setVisible(true);
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        frame.dispose();
    }
}