【问题标题】:Rendering Image into label将图像渲染成标签
【发布时间】:2012-04-25 15:09:47
【问题描述】:

我有一个标签。我想将图像渲染到其中。但是下面的代码可以做任何事情。

 CardLayout cl = (CardLayout) (mainPanel.getLayout());
        cl.show(mainPanel, "newPersonaCard");
        BufferedImage myPicture = ImageIO.read(new    File("C:\\Desktop\\Documents\\Pictures\\always.jpg"));
        ImageIcon icon = new ImageIcon(myPicture);
        icon.getImage().flush();

我正在使用 netbean 设计器。

【问题讨论】:

  • 尝试再次包装容器。
  • 如需尽快获得更好的帮助,请发帖 SSCCE。但是在单击按钮时加载图像,可能是来自these images 之一的热链接。
  • stackoverflow.com/a/8530698/977676 此解决方案有效,如果您仍有问题,请发布 SSCCE!

标签: java swing jlabel


【解决方案1】:

你是对的,在某些情况下,在 JLabel 中重新绘制 Icon 会出现问题,那么你必须打电话,

myIcon.getImage().flush();
myLabel.setIcon(myIcon);

其余方法在Icon和JLabel中正确实现

【讨论】:

  • @Kitex 不知道,真的你必须用 SSCCE 编辑你的问题并使用来自(例如)来自(@Andrew Thompson)的图像,因为没有人可以看到你的其余代码并且(不想要如果我有我的) 访问保存在硬盘上的图像的权限:-)
【解决方案2】:
.
.
File file = fileChooser.getSelectedFile();

JLabel label = new JLabel();
ImageIcon icon = new ImageIcon(file.getAbsolutePath());
label.setIcon(icon);
//add label to panel

【讨论】:

  • setLocation 和 setSize 调用是怎么回事?标签完全能够计算自己的大小,布局管理器将确定位置
  • 正确,已修复。感谢您的评论
【解决方案3】:
fileChooser.showDialog(saveBtn2, null);
File file = fileChooser.getSelectedFile();
System.out.println("The path to file "+file.getAbsolutePath());          
ImageIcon icon = new ImageIcon(file.getAbsolutePath());
pictureLbl.setIcon(icon);

【讨论】:

  • 我怀疑,尽管setIcon(...) 现在需要revalidate()。无需重新验证。
猜你喜欢
  • 2017-02-04
  • 1970-01-01
  • 2017-09-06
  • 2018-02-21
  • 2021-06-04
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2012-05-14
相关资源
最近更新 更多