2012-08-22 65 views
3

我的問題很簡單我猜... 我想我的Java框架居中當我運行我的程序。居中整個窗口Java

我用下面的代碼:

setLocationRelativeTo(null); 

問題:

這是居中的幀,但不整個幀的左上角。我該如何糾正這個問題,並讓整個框架居中?

謝謝你的幫助!

+0

在標題中加入「(已解決)」沒有意義。如果你有你的答案,__accept__那! – 0605002

+0

@ FlopCoder:當我編輯它時,我不能等待幾分鐘。感謝您的理解。 – user1614914

回答

9

setLocationRelativeTo(null); ... 這是

看來這...呼叫在錯誤的時間所取得的幀的左上角,框架先後承擔了自然大小前。要解決該問題,請按照此順序進行。

  • 添加所有組件,給GUI一個大小。
  • 致電pack()可以使框架成爲顯示其當前包含的組件所需的最小尺寸。
  • 呼叫setLocationRelativeTo(null);

OTOH:如果您的計算機上運行的程序,走這一點。但是,如果你需要提供應用程序。對於像我這樣的其他人,請考慮使用setLocationByPlatform(true)(下面的Windows演示)。

+1

這必須是被接受的答案。 – gontard

+0

@gontard我也這麼認爲!但是,提出這個問題的人要真正做出決定。當我發佈這個答案時,已經有一個被接受的答案。但我希望注入一些其他想法,賺取一些贊成票,也許,也許,請求者改變主意。 ;) –

+0

你好,我剛剛閱讀你的答案和其他評論,我必須承認你的答案是最好的,最簡單的。我遵循你的建議,它工作正常。謝謝,至少我的代碼會更「乾淨」。 – user1614914

0

你可以試試這個。它是在我的情況下工作。

Frame frame = new Frame("Centered Frame"); 
Dimension dimemsion = Toolkit.getDefaultToolkit().getScreenSize(); 
frame.setLocation(dimemsion.width/2-frame.getSize().width/2, 
        dimemsion.height/2-frame.getSize().height/2); 

如果您使用的是NetBeans,請轉至platee manager - > property - > form Size策略。