这个顺序(和这些方法)更好:
frame.pack();frame.setLocationByPlatform(true); // superior to centeringframe.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)