gpt4 book ai didi

java - EDT 中是否调用了 setBounds() ?

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:06 25 4
gpt4 key购买 nike

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

最佳答案

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

此外,我从未见过有人覆盖 setBounds(),所以我确实想知道是否没有替代解决方案,例如每次 SwingTimer 执行时查询边界。使用监听器监听窗口大小,就像你说的那样听起来好多了。

关于java - EDT 中是否调用了 setBounds() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918931/

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