我注意到我的大部分摇摆GUI都会在它们居中之前闪烁。几乎所有的JFrame都发生过这种情况,我想知道是否有解决方法。我通常打电话setVisible(true)
,然后pack()
,其次是setLocationRelativeTo(null)
。这使得它出现在右上角,然后自行居中。我知道闪烁正在发生,因为每个方法调用都需要时间,但是有没有解决方法(使其更加美观和流畅)?在移动位置之前JFrames闪烁
回答
此顺序(这些方法)是更好的:
frame.pack();
frame.setLocationByPlatform(true); // superior to centering
frame.setVisible(true);
如果你设置了一些可见帧的这样做,他们可能会出现的东西like this:
当然,没有任何闪烁,抖动或摇。 )
与(
setLocationRelativeTo(null)
的问题)是该图形用户界面的右上角的中心,而不是整个的JFrame。
一个JFrame
的defualt尺寸为0x0和它保持这样直到pack()
或setSize()
(但使用pack()
因为你正在做的目前)被调用。因此,如果您要求在屏幕上居中显示0x0组件,JRE会将0x0大小的组件的“中间像素”放置在屏幕的中心。
或者,如果您先打包它有正确的大小,并且该方法将按预期工作。例如。
frame.pack();
frame.setLocationRelativeTo(null); // show my splash screen!
frame.setVisible(true);
您应该先做setLocationRelativeTo(null)
,然后再做setVisible(true)
。
问题在于GUI的右上角居中,而不是整个JFrame。 – imbuedHope 2012-01-27 06:39:48
'pack()'应该在***'setLocationRelativeTo(null)'之前调用***使其居中。我想这就是GP辛格的意思。 (但在我的回答中,我更清楚地了解方法调用的顺序。) – 2012-01-27 06:46:43
另请参阅编辑我的答案,这将有望解释发生了什么。 – 2012-01-27 06:58:36
- 1. Css动画在移动设备上启动之前闪烁一秒
- 2. Cocos2d精灵在移动时闪烁
- 3. OpenGL,物体在移动时闪烁
- 4. 之前SceneKit内容的闪烁
- 5. 更改帧时活动闪烁/闪烁
- 6. Monogame/C# - 鼠标位置闪烁
- 7. 设置layer.transform在结束位置闪烁图层,然后从当前位置对其进行动画处理
- 8. 闪烁 - 在窗口滚动上更改CSS背景位置
- 9. toggleClass闪烁的鼠标移动
- 10. AS3停止移动物体的闪烁
- 11. UITableView的闪烁,而移动的iPhone
- 12. HTML5画布图像移动闪烁
- 13. 动画-js悬停动画在移动太快时闪烁
- 14. jquery动画闪烁
- 15. UIImageView闪烁动画
- 16. Android动画闪烁
- 17. JQuery动画闪烁
- 18. Android动画闪烁
- 19. 滚动条闪烁
- 20. Cocos2d动画闪烁
- 21. UIAlertViewController闪烁/闪烁简要
- 22. Symfony OutputFormatterStyle“闪烁”不闪烁
- 23. 停止闪烁从闪烁
- 24. 闪烁或闪烁bgcolor
- 25. Bakckground Image滚动时位置“闪烁”和“跳跃”
- 26. 使用jQuery滚动来更新位置使元素闪烁
- 27. jQuery固定位置滚动闪烁修复?
- 28. 如何在UIScrollView中闪烁/闪烁滚动指示灯?
- 29. 根据阵列中的位闪烁/闪烁UIView
- 30. 图像在VB6中移动和动画时闪烁
对于'setLocationByPlatform()'+1。 – trashgod 2012-01-27 06:49:00