我试图在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/)。 –
我知道这是一个混乱的代码,因为我想不出另一种方式。无论如何,非常感谢您提供的评论和链接。这是一个很大的帮助。 –