【发布时间】:2014-01-15 16:57:15
【问题描述】:
我有一个有趣的情况,我通过调用 JLabel 的方法 getSize() 间歇性地得到负值。我想调整 JLabel 的大小以尽可能获得最大空间,但我经常把它颠倒过来,就像在 this question 中一样。似乎在获得该负值后的瞬间,正确的值就可用了。 我几乎可以肯定这是由我的不良 GUI/逻辑线程架构引起的线程竞争问题,但是,我注意到如果我删除了我对父 JPanel 所做的this 解决方法,问题就会消失。
我已经尝试在赋值时添加一个同步块,我之前做过 jlabel.verify() 但没有任何帮助。不幸的是,我真的需要保留我提到的解决方法。
如果有任何解决此问题的指导,我将不胜感激,在此先感谢。
这是截图:
【问题讨论】:
-
该图像没有帮助。我们不知道您的代码在做什么。发布一个 MCVE 来说明问题。
-
It seems that an instant after acquiring that negative value the right one is available.将if更改为while,你就设置好了 ahahahahaha...(但不,你应该解决原因而不是结果) -
好的,我一有MCVE就更新,谢谢!
-
“我通过调用 JLabel 的方法 getSize() 得到负值。” 我不得不调用
JLabel的首选大小大约 2 或 3 次自从引入 Swing 以来,在我的 Java 编码中。我不得不调用大小 ..never! 你为什么认为你需要调用它? -
我发现组件在新的时候返回大小
标签: java swing thread-safety awt