2013-01-07 45 views
0

我有我在全屏模式下使用的JFrame以下:確定屏幕的高度在Java中

setExtendedState(JFrame.MAXIMIZED_BOTH); 
setUndecorated(true); 

而且我想知道的高度。請注意,Toolkit.getDefaultToolkit()。getScreenSize()不起作用,因爲我在Mac上,並且真正的高度應該排除屏幕頂部的Mac欄事物的高度。

而在Windows的情況下,例如,高度應該排除開始欄。因此,我想知道我擁有的窗口空間的真實高度。

+1

你嘗試從這個問題的答案? http://stackoverflow.com/questions/7083410/java-screen-size-on-a-mac – nickb

+0

*「例如,在Windows的情況下,高度應該排除開始欄。」*不在這裏它應該「T。這個基於Windows 7的框被配置爲自動隱藏任務欄。 –

+0

@nickb這很有趣,我喜歡,但它包括「虛擬」桌面(即多個顯示器)還是隻有一個屏幕? – MadProgrammer

回答

3

我用這個

public static Rectangle getScreenViewableBounds() { 

    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    GraphicsDevice gd = ge.getDefaultScreenDevice(); 

    Rectangle bounds = new Rectangle(0, 0, 0, 0); 

    if (gd != null) { 

     GraphicsConfiguration gc = gd.getDefaultConfiguration(); 
     bounds = gc.getBounds(); 

     Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc); 

     bounds.x += insets.left; 
     bounds.y += insets.top; 
     bounds.width -= (insets.left + insets.right); 
     bounds.height -= (insets.top + insets.bottom); 

    } 

    return bounds; 

} 

確定的 「安全」 屏幕邊界。這考慮到了屏幕的插圖,併產生一個「安全」的可視區域的矩形...

更新

一個小測試後,我satisifed(只要我有Windows多屏幕),GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds()似乎返回默認監視器的相同結果。前面提到的方法的benifit,是它可以被用來確定任何設備的「安全」的界限

感謝Java - Screen Size on a Mac

0

frame.getContentPane()。getHeight();

當您使用此方法時,您將獲得JFrame的高度,而不是屏幕。它也不包括邊界高度。