【问题标题】:Using JLabel setIcon to add image on runtime使用 JLabel setIcon 在运行时添加图像
【发布时间】:2014-02-22 17:11:14
【问题描述】:

我正在使用 JFileChooser 加载图像并在运行时将它们显示在 JPanel 上。为 JLabel 使用 setIcon() 是一种很好的方法,还是有更合适的方法?

【问题讨论】:

  • 有什么东西不工作吗?如果是,请发布一些代码。如果它正在运行并且您想要一些改进的想法,请将您的代码发布到 Code Review
  • 另一种方法是使用绘图类在面板上绘制图像。我不能说哪种方法会更好
  • @peeskillet,不,它工作正常,我只是想知道这种方法是否足够,我只是想知道是否有更好的方法。谢谢
  • @jmw5598,谢谢,我会试试这个方法。
  • 在 JLabel 中将图像设置为图标并不能提供太大的灵活性(例如,您不能用不同大小左右绘制图像),但是......如果 JLabel 足以满足你想做,那么使用setIcon也是可行的。

标签: java jpanel jlabel


【解决方案1】:

我会说 JLabel 和 setIcon,使用 ImageIcon 是确保图像实际加载并正确显示在 UI 中的最简单方法。

如果您只是存储选择器中的文件路径,并在某处的某处的paint(Graphics g) 方法中使用 g.drawImage(...) 绘制图像,那么您不知道 图像实际上已加载到内存中。当然,这可以通过使用 MediaTracker 来解决,但是上面的 JLabel/ImageIcon-approach 可以为您解决这个问题。

【讨论】:

  • ImageIcon 因默默失败而臭名昭著,这意味着如果由于某种原因无法读取图像,它不会总是报告事实。 ImageIcon 也仅限于一小部分图像类型。一般来说,ImageIO 更适合读取(/写入)图像,因为它在失败时会抛出 IOException,并且它可以处理更灵活的图像格式范围,并提供可插入的 API,以便在需要时添加更多内容
  • 是的。我个人确保在去那里之前实际的文件/资源​​本身是可用且有效的,但实际上它会默默地失败(有时)取决于你喂它的小麦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多