2016-09-16 383 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)爲'隱形'按鈕。 –