在移动位置之前闪烁JFrame

imb*_*ope 2 java swing jframe centering

我注意到我的大部分摇摆GUI都会在它们居中之前闪烁.这几乎发生在我所制作的任何JFrame上,我想知道是否有解决方法.我通常所说的setVisible(true),然后pack(),其次是setLocationRelativeTo(null).这使它出现在右上角,然后自我居中.我知道闪烁正在发生,因为每个方法调用都需要时间,但是有没有解决方法(为了使它变得美观和流畅)?

And*_*son 7

这个顺序(和这些方法)更好:

  1. frame.pack();
  2. frame.setLocationByPlatform(true); // superior to centering
  3. frame.setVisible(true);

如果你设置了一些可见的框架,它们可能会显示如下:

当然,没有任何闪烁,摇晃摇晃.;)


那个(setLocationRelativeTo(null))的问题是GUI的右上角是居中的,而不是整个JFrame.

a的defualt大小JFrame是0x0并且它保持这种方式直到pack()或者setSize()(但是pack()当前正在使用)被调用.因此,如果要求0x0组件在屏幕上居中,JRE会将0x0大小组件的"中间像素"放在屏幕的正中心.

或者,如果您先打包它,它具有正确的大小,并且该方法将按预期工作.例如

frame.pack();
frame.setLocationRelativeTo(null); // show my splash screen!
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)