在Java中最大化JFrame

有几个相关的问题,例如在这里和这里 ,都说最大化一个JFrame的方式是使用下面的代码:

 frame.setExtendedState(JFrame.MAXIMIZED_BOTH); //Some answers have these lines frame.setVisible(true); //reversed 

然而,对于我来说,不知道这是否是一个Windows 10的错误/ Java 8的错误,当我使用这个代码的结果是这样的(不pipe上面的两行代码是哪种方式):

偏移<code> JFrame </ code>

正如你在图像中看到的那样,窗口是正确的大小,但是它稍微覆盖底部,并且从左边稍微偏移。 有没有办法解决这个问题,或实际上通过点击最大化button的代码JFrame的程序?

编辑
这是一个演示问题的MCVE:

 import java.awt.GridLayout; import javax.swing.JFrame; public class CDBurner extends JFrame { private static final long serialVersionUID = -6027473114929970648L; private CDBurner() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new GridLayout(1, 1)); setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); setVisible(true); setLocationRelativeTo(null); requestFocus(); } public static void main(String[] args) { new CDBurner(); } } 

该线

 setLocationRelativeTo(null); 

设置框架的位置。 如果到了

 setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); 

它在最大化之后改变框架的位置,导致你观察到的间隙。 您应该删除该行,因为最大化框架设置其位置(尽管您可以在设置扩展状态之前放置它,在这种情况下它什么也不做)。