gpt4 book ai didi

java - 慢慢增加 jButton 的大小

转载 作者:行者123 更新时间:2023-11-30 07:48:40 24 4
gpt4 key购买 nike

嗨,我试图在学校的一个项目的界面上制作类似 jetty 的效果。我只需要几个按钮,当我将鼠标悬停在它们上方时,它们会变大,我已经成功实现了这一点。问题是它会立即发生,而我希望它是原始尺寸和新尺寸之间的缓慢过渡。这就是我尝试做的:

public void biggerButton(JButton boton) {
Runnable runnable = new Runnable() {
@Override
public void run() {
int i = 0;
while ( i < 10) {
boton.setSize(i + boton.getWidth(), i + boton.getHeight());
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
}
i++;
}
}
};
runnable.run();
}

当鼠标进入放置在容器上的按钮时,代码就会运行。如果有人可以帮助我,我将非常感激。谢谢

最佳答案

您至少需要将影响 Swing 组件的代码放在事件调度线程上:

while (i < 10)
{
final int adjustment = i;
SwingUtilities.invokeLater( new Runnable()
{
@Override
public void run()
{
boton.setSize(adjustment + boton.getWidth(), adjustment + boton.getHeight());
}
});
}

如果您使用 Java 8,lambda 会使此代码变得更好:

while (i < 10)
{
final int adjustment = i;
SwingUtilities.invokeLater( () ->
{ boton.setSize(adjustment + boton.getWidth(), adjustment + boton.getHeight()); }
}

与我使用过的所有 GUI 工具包一样,Swing 不是线程安全的,因此只能在事件线程上进行更改。

另请注意,每一步仅增加 1 个像素,总共 10 个像素。这可能不是很明显。

关于java - 慢慢增加 jButton 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33572611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com