2016-11-05 39 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中發佈。 –