我注意到我的大多数摇摆GUI都会在它们居中之前闪烁。这几乎发生在我所制作的任何JFrame上,我想知道是否有解决方法。我通常会调用setVisible(true)
,然后调用pack()
,然后调用setLocationRelativeTo(null)
。这使它出现在右上角,然后自我居中。我知道闪烁正在发生,因为每个方法调用都需要时间,但有没有解决方法(为了使它变得美观和流畅)?
答案 0 :(得分:7)
这个顺序(以及这些方法)更好:
frame.pack();
frame.setLocationByPlatform(true); // superior to centering
frame.setVisible(true);
如果您设置了一些可见的框架,它们可能会出现like this:
当然,没有任何闪烁,摇晃或摇晃。 ;)
问题(
setLocationRelativeTo(null)
)是GUI的右上角是居中而不是整个JFrame。
JFrame
的默认大小为0x0,并且一直保持到pack()
或setSize()
(但正如您当前正在使用的pack()
)。因此,如果要求0x0组件在屏幕上居中,JRE会将0x0大小的组件的“中间像素”放在屏幕的正中心。
或者,如果您先打包它 正确的大小,该方法将按预期工作。 E.G。
frame.pack();
frame.setLocationRelativeTo(null); // show my splash screen!
frame.setVisible(true);
答案 1 :(得分:2)
您最后应该先setLocationRelativeTo(null)
然后再setVisible(true)
。