在移动位置之前闪烁JFrame

时间:2012-01-27 06:35:09

标签: java swing jframe centering

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

2 个答案:

答案 0 :(得分:7)

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

  1. frame.pack();
  2. frame.setLocationByPlatform(true); // superior to centering
  3. frame.setVisible(true);
  4. 如果您设置了一些可见的框架,它们可能会出现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)