【发布时间】:2010-12-10 05:59:16
【问题描述】:
我想在同一个 JFrame 中显示同一图像的变体,例如在 JFrame 中显示一个图像,然后将其替换为同一图像的灰度。
【问题讨论】:
标签: java swing jframe bufferedimage
我想在同一个 JFrame 中显示同一图像的变体,例如在 JFrame 中显示一个图像,然后将其替换为同一图像的灰度。
【问题讨论】:
标签: java swing jframe bufferedimage
如果生命太短,请阅读官方文档,这是一种多次完成它的肮脏方式
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));
}
【讨论】:
为了构建 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
【讨论】:
pack()
frame.pack(); 之前调用frame.setPreferredSize(new java.awt.Dimension(int width, int height)); 导入java.awt.Dimension 也可以:) 这也应该是选定的答案。 +1 代码示例。
每当您更新图像时,您都必须重新绘制 JFrame。
这是一个关于该主题的简单 google 提出的内容:(我使用这些教程进行所有 Java 编码)
【讨论】:
我不太确定您的问题是什么,但如果您有一个 BufferedImage,那么您只需使用该图像创建一个 ImageIcon,然后您将图标添加到 JLabel 并将标签添加到 GUI,就像任何其他组件一样。
如果您的问题是关于如何创建灰度,我建议您使用这些术语作为搜索关键字在网上搜索,我相信您会在那里找到示例。
【讨论】: