2016-09-16 99 views
0

我试图给我的界面一个新的功能,但我遇到了一些障碍。我想在鼠标进入时在JLabel上放大图像。 这里是我的JLabel的外观:如何从ImageIcon中获取图像(obj)

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的说,我需要图片创建我放大的ImageIcon

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

哪有我回顾了用于从代码中创建JLabel的图像。 任何帮助,将不胜感激。

+0

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

回答

2

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

而是创建自己的MouseListener中您可以使用JButton给你翻转效果:

喜欢的东西:

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)); 
+0

在按钮上工作很好。 (翻转metod摆脱了多个缩放issuses)我只需要将它从.getScaledImage(...)更改为.getScaledInstance()。太糟糕了,它仍然显示为按钮,也许是因为外观和感觉。我无法将它与背景中的JPanel区分开来。 –

+0

*“我无法在背景中将它设置为与JPanel无法区分。”*它只是需要调整一下按钮。看到[这个答案](http://stackoverflow.com/a/10862262/418556)为'隐形'按钮。 –