有几个相关的问题,例如在这里和这里 ,都说最大化一个JFrame
的方式是使用下面的代码:
frame.setExtendedState(JFrame.MAXIMIZED_BOTH); //Some answers have these lines frame.setVisible(true); //reversed
然而,对于我来说,不知道这是否是一个Windows 10的错误/ Java 8的错误,当我使用这个代码的结果是这样的(不pipe上面的两行代码是哪种方式):
正如你在图像中看到的那样,窗口是正确的大小,但是它稍微覆盖底部,并且从左边稍微偏移。 有没有办法解决这个问题,或实际上通过点击最大化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);
它在最大化之后改变框架的位置,导致你观察到的间隙。 您应该删除该行,因为最大化框架设置其位置(尽管您可以在设置扩展状态之前放置它,在这种情况下它什么也不做)。