【问题标题】:How to get Image (obj) from ImageIcon如何从 ImageIcon 获取图像(obj)
【发布时间】:2016-09-16 18:45:35
【问题描述】:

我正在尝试给我的界面一个新功能,但我遇到了一些障碍。我想在鼠标输入时放大 JLabel 上的图像。 这是我的 JLabels 的外观:

int sacle = 50 //Size of my JLabel Icon
int zoom = 10 // How much the icon should enlarge
imageIcon = new ImageIcon(new ImageIcon(myClass.class.getResource(Picture))
           .getImage().getScaledInstance(scale, scale, Image.SCALE_SMOOTH));
JLabel stackIsGreat = new JLabel();
stackIsGreat.setIcon(imageIcon);
//and I add multiple of such JLabels`

并且代码继续进行。我想创建一个函数并将其添加到 mouseListener,所以所有的行为都相同。我想通过以下方式实现:

//inside external method
activeLabel = (javax.swing.JLabel)(e.getSource());
ImageIcon temp = (ImageIcon) activeLabel.getIcon();

但我不知道我可以使用它,因为 java 说我需要 Image 来创建放大的 ImageIcon

ImageIcon enlarged = new ImageIcon((Image).getScaledInstance(scale + zoom, scale + zoom, Image.SCALE_SMOOTH))

如何从代码中检索用于创建 JLabel 的图像。 任何帮助将不胜感激。

【问题讨论】:

  • 这可能是答案,但可能有更好的方法Image image = ((ImageIcon) activeLabel.getIcon()).getImage(); ImageIcon imageIconTemp = new ImageIcon( image.getScaledInstance( sizeW + zoom, sizeH + zoom, Image.SCALE_SMOOTH));

标签: java swing jlabel imageicon


【解决方案1】:

我想在鼠标进入时放大 JLabel 上的图像。

您可以使用JButton 来代替创建自己的 MouseListener 来实现翻转效果:

类似:

JButton button = new JButton(...);
button.setBorderPainted( false );
ImageIcon icon = (ImageIcon)button.getIcon();
Image image = icon.getImage();
Image scaled = image.getScaledImage(...);
button.setRolloverIcon( new ImageIcon( scaled ) );

【讨论】:

  • 按钮效果很好。 (翻转方法摆脱了多个缩放问题)我只需将其从 .getScaledImage(...) 更改为 .getScaledInstance()。太糟糕了,它仍然显示为按钮,可能是因为外观。我无法将其设置为与背景中的 JPanel 无法区分。
  • “我无法将其设置为与背景中的 JPanel 无法区分。” 它只需要对按钮进行一些调整。有关“不可见”按钮,请参阅 this answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多