如何在JFrame中显示BufferedImage?

时间:2009-10-26 19:08:13

标签: java swing jframe bufferedimage

我想在同一个JFrame中显示同一图像的变体,例如在JFrame中显示图像,然后用相同图像的灰度替换它。

4 个答案:

答案 0 :(得分:37)

基于camickr的解决方案(对于像我这样想要快速复制/粘贴代码的懒人),这里有一个代码说明:

JFrame frame = new JFrame();
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(new JLabel(new ImageIcon(img)));
frame.getContentPane().add(new JLabel(new ImageIcon(img2)));
frame.getContentPane().add(new JLabel(new ImageIcon(img3)));
frame.pack();
frame.setVisible(true);
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // if you want the X button to close the app

答案 1 :(得分:7)

每当您更新图片时,您都必须重新绘制JFrame

以下是关于该主题的简单谷歌:(我使用这些教程进行所有Java编码)

Java Tutorial: Drawing an Image

答案 2 :(得分:3)

我不确定你的问题但是如果你有一个BufferedImage,那么你只需使用图像创建一个ImageIcon,然后将图标添加到JLabel并像其他任何组件一样将标签添加到GUI。 / p>

如果您质疑如何创建灰度,我建议您使用这些字词作为搜索关键字搜索网页,我相信您会在那里找到示例。

答案 3 :(得分:2)

以防万一,也请仔细阅读官方文档,这是使它多次重复完成的肮脏方法

private static JFrame frame;
private static JLabel label;
public static void display(BufferedImage image){
   if(frame==null){
       frame=new JFrame();
       frame.setTitle("stained_image");
       frame.setSize(image.getWidth(), image.getHeight());
       frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       label=new JLabel();
       label.setIcon(new ImageIcon(image));
       frame.getContentPane().add(label,BorderLayout.CENTER);
       frame.setLocationRelativeTo(null);
       frame.pack();
       frame.setVisible(true);
   }else label.setIcon(new ImageIcon(image));
}