2015-04-12 50 views
0

我無法獲取JFrame的大小。 JFrame已通過setExtendedState(MAXIMIZED_BOTH)最大化,並且它也是可見的。無法獲取ExtendedState JFrame的大小

import javax.swing.JFrame; 

public class Fenster extends JFrame { 

    Fenster() { 

     this.setExtendedState(MAXIMIZED_BOTH); 
     this.setUndecorated(true); 
     this.setAlwaysOnTop(true); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     this.pack(); 
     this.setVisible(true); 
     System.out.println(this.getWidth() + " x " + this.getHeight()); 

    } 

} 

我只在控制檯中得到「0 x 0」或「1 x 1」。我也不知道爲什麼輸出是隨機的。

+0

我明白了1366 x 768.我複製了你的代碼。 – Yoda

+0

我在Arch Linux上用Gnome3測試了JRE7-openjdk-7.u75_2.5.4-1。 – LittleSatan

+0

*'我無法獲得JFrame的大小。「*您爲什麼要這個尺寸?請參閱[什麼是XY問題?](http://meta.stackexchange.com/q/66377) –

回答

0

嘗試:

int w = getSize().getWidth(); 
int h = getSize().getHeight(); 

我不知道爲什麼你的代碼不能正常工作

+0

同樣的問題,我已經試過了,我也試過 this.getContentPane()。getSize()。getHeight(),但它也沒有工作 – LittleSatan

+0

然後,這可能是由於你調用pack中沒有組件框架 – TameHog

+0

起初,我沒有使用pack(),但在另外一個關於SO的問題中,有人寫到我必須先使用pack()和setVisible(true),然後才能獲得大小。 – LittleSatan

2

JFrame.pack()被setExtendedState後調用它可以調整的JFrame(評論他人不遇到此問題,所以它可能是基於環境的)。我可以重現你在Mac上觀察到的東西 - 如果pack()被移除或set()在set()之後調用setExtendedState,那麼行爲似乎更符合我相信你的想法。

+0

如果人員沒有添加任何組件,那麼框架被設置爲儘可能最小,爲0x0或1x1 – TameHog

+0

真的,我希望這是主要用於演示的目的。即使是組合ents增加,我觀察到的是,沒有移動調用setExtendedState尺寸(例如全屏)不會發生。 – copeg

+0

是的,他必須移動該包() – TameHog