【问题标题】:How can I display a BufferedImage in a JFrame?如何在 JFrame 中显示 BufferedImage?
【发布时间】:2010-12-10 05:59:16
【问题描述】:

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

【问题讨论】:

    标签: java swing jframe bufferedimage


    【解决方案1】:

    如果生命太短,请阅读官方文档,这是一种多次完成它的肮脏方式

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

    【讨论】:

      【解决方案2】:

      为了构建 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
      

      【讨论】:

      • 这只是使最小的窗口成为可能。
      • 很久没用swing了,不过如果你有一个小窗口,我猜你没有打电话给pack()
      • 正是我想要的,快速检查 bufferedImages 是否被正确读取.. 不需要所有这些 JComponent 扩展和打印覆盖。谢谢!
      • @IanWill 您还需要在调用frame.pack(); 之前调用frame.setPreferredSize(new java.awt.Dimension(int width, int height)); 导入java.awt.Dimension 也可以:) 这也应该是选定的答案。 +1 代码示例。
      【解决方案3】:

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

      这是一个关于该主题的简单 google 提出的内容:(我使用这些教程进行所有 Java 编码)

      Java Tutorial: Drawing an Image

      【讨论】:

        【解决方案4】:

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

        如果您的问题是关于如何创建灰度,我建议您使用这些术语作为搜索关键字在网上搜索,我相信您会在那里找到示例。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-09-23
          • 2011-10-26
          • 1970-01-01
          • 1970-01-01
          • 2011-06-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多