setBounds()是否在EDT中被调用



在事件调度线程上调用Component(如JPanel)的setBounds()方法?我问这个问题是因为我正在编写一个程序,该程序绘制平台并使用Swing Timer将它们向上移动。我重写了setBounds()方法,这样每次JPanel调整大小时,平台也会调整大小。我只是想确保setBounds()Timer移动平台时不会调整平台的大小。此外,使用WindowListener来检查JPanel是否调整大小会更好吗?

setBounds()将由Swing代码在EDT上调用,但是您必须确保代码自己对setBounds()的调用也只在EDT上调用它。如果你能确保所有的setBounds()调用都发生在EDT上,那么你就不必担心setBounds()在你的SwingTimer被执行的同时被执行,因为SwingTimer在默认情况下也会在EDT上执行(所以它们不会同时执行)。

我也从来没有见过有人重写setBounds(),所以我想知道是否有一个替代的解决方案,如每次你的SwingTimer执行查询边界。像你说的那样使用侦听器侦听窗口大小确实听起来更好。

相关内容

  • 没有找到相关文章

最新更新