setBounds()
的{{1}}方法是否像Component
一样调用事件调度线程?我问这个是因为我正在编写一个程序来绘制平台并使用JPanel
来移动它们。我重写Swing Timer
方法,以便每次调整setBounds()
的大小时,平台也会调整大小。我只是想确保JPanel
移动它们时setBounds()
没有调整平台大小。另外,使用Timer
检查WindowListener
是否已调整大小会更好吗?
答案 0 :(得分:1)
setBounds()将在EDT上由Swing代码调用,但您必须确保代码自己的setBounds()调用也只在EDT上调用它。如果你可以确保在EDT上发生setBounds()的所有调用,那么你不必担心在执行SwingTimer时执行setBounds()因为SwingTimers默认情况下也在EDT上执行(所以他们不会同时执行。)
此外,我从未见过有人覆盖setBounds()所以我想知道是否没有替代解决方案,例如每次SwingTimer执行时只查询边界。使用监听器监听窗口调整大小就像你说的那样听起来好多了。