2016-11-05 22 views
0

已经有与此相关的几个问题,例如herehere,双方说的方式最大化JFrame是使用下面的代码:最大化的JFrame在Java中

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

但是,对我来说,不知道这是否是一个窗口10的错误/ JAVA 8错误与否,当我使用此代码的结果是这样的(无论哪个方式轮的两行代码以上是):

Offset <code>JFrame</code>

作为你可以看到我在图像中,窗口是正确的大小,但是,它略微覆盖底部,并且从左侧略微偏移。有没有办法解决这个问题,或者通过点击代码中的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(); 
    } 
} 
+1

为了尽快提供更好的帮助,请发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。 –

+0

@AndrewThompson对不起,不包括一个。编辑问题 – Dan

+0

@AndrewThompson你知道一种解决这个问题的方法吗? – Dan

回答

3

线

setLocationRelativeTo(null); 

设置帧的位置。如果出现后

setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); 

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

+0

非常感谢。修复它 – Dan

+2

好的!我有我的怀疑,但不准备发表评论,直到他们在MCVE中发布。 –