我試圖在JavaBean中實現Fish Eye Image Menu。首先,我創建了一個JLabel
並將此代碼放在mouseEntered
事件中。但是當我運行這個時,輸出不穩定,不能重新調整JLabel
的大小。JLabel上的魚眼效果
這是我的代碼。
new Thread() {
public void run() {
for (int i = 0; i < 30; i++) {
int x = imgLabel.getWidth()+1;
int y = imgLabel.getHeight()+1;
imgLabel.setSize(x , y);
// sets the icon to the label
imgLabel.setIcon(new ImageIcon(new ImageIcon(getClass().getResource("/pics/icon.png")).getImage().getScaledInstance(x , y, Image.SCALE_DEFAULT)));
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}.start();
如果我將該圖像設置爲JLabel的那一行,標籤會完全重新調整大小。
哪裏出錯了?
爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –
順便說一句 - 如果代碼行混亂起作用,我會更驚訝,而不是失敗。 1)[不要調用setSize(..)](http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-methods-in-java-swi)2)在EDT上更新GUI。 3)不要睡在EDT上。有關更多詳細信息,請參見[Swing中的併發](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。 –
我知道這是一個混亂的代碼,因爲我想不出另一種方式。無論如何,非常感謝您提供的評論和鏈接。這是一個很大的幫助。 –