gpt4 book ai didi

java - 为什么 JButton.setBounds 不能在 for 循环中工作?

转载 作者:行者123 更新时间:2023-12-01 23:18:59 25 4
gpt4 key购买 nike

如果 setBounds 方法不在 for 循环中,它就可以正常工作,但是当我将它放入 for lopp 中时,它就会开始工作,这是为什么?

btnResize.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {

//This re sizes the JButton.
btnResize.setBounds(10, 11 ,100, 100);

//This does nothing
for(int i = 0; i < 500; i ++) {
btnResize.setBounds(i, i , i, i);
}

}
});

最佳答案

您在 UI 线程中执行此操作,这意味着在循环完成之前,UI 中的任何内容都没有机会对其使用react...只有最后一个 setBounds 调用才会真正有任何反应效果看得见。

如果您尝试执行动画,则需要使用某种描述的计时器,以便您可以重复进行小的更改,等待(不阻塞 UI 线程),然后进行另一个更改等。(您无论如何,可能不想使用 setBounds ,但这是一个稍微不同的问题。)请注意,您仍然需要在 UI 线程上进行更改,因为它们是 UI 更改 - 您只需让 UI 对更改使用react,然后再进行下一个更改。

请参阅tutorial on Swing timers了解更多信息和示例。

关于java - 为什么 JButton.setBounds 不能在 for 循环中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20823511/

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