0
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();
    }
}

大家好!我只是想在屏幕上打印没有任何框架的图像。我认为这段代码应该将图像打印到屏幕上;等待两秒钟,然后将其丢弃。我究竟做错了什么?

顺便说一句,我没有收到任何错误,程序只存活了 2 秒钟然后就死了。

4

2 回答 2

1

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

您已经将框架设置为未装饰。设置在框架上可见,将起作用。

于 2013-03-12T21:15:04.460 回答
0

最后你不需要 Graphics 部分,你也忘了调用 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();
    }
}
于 2013-03-12T21:32:12.277 回答