2011-07-27 46 views
10

我無法弄清楚如何讓windows任務欄高度dynamicaly設置我的應用程序全屏。
如您所知,任務欄可以位於四個位置:底部,頂部,左側或右側,所以我想知道是否可以知道當前位置來設置窗口邊界。Windows任務欄高度/寬度

編輯: 使用盧卡斯鏈接我tryied這樣的:

GraphicsDevice myDevice; 
Window myWindow; 

try { 
    myDevice.setFullScreenWindow(myWindow); 
    ... 
} finally { 
    myDevice.setFullScreenWindow(null); 
} 

但我想趁自己一個NullPointerException

+0

你使用Jframe/frame嗎? – Pratik

+0

對不起,我正在使用JFrame – mastaH

回答

5

當您創建JFrame時。要使JFrame的API

jFrame = new JFrame("TESTER"); 
jFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

的MAXIMIZED_BOTH設置將設置你的窗口切換到全屏模式,並自動考慮任務欄的位置到setExtendedState()方法的調用。

+0

這可能是一個解決方案,但我希望切換方法可以將JFrame設置爲全屏並返回到「正常」大小。 – mastaH

+0

您可以設置一個默認大小,例如'jFrame.setSize(450,450)',然後調用'jFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);'當您按下窗口頂部的最大化按鈕時,它將在兩種大小之間切換。 –

+0

有沒有辦法用按鈕在max和normal之間切換? – mastaH

2

如果你希望你的應用程序在全屏模式下運行,你可以通過它進入得到一個合適的GraphicsDevice並使用setFullScreenWindow(Window)-method

GraphicsDevice myDevice = GraphicsEnvironment. 
    getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
Window myWindow; 

try { 
    myDevice.setFullScreenWindow(myWindow); 
    ... 
} finally { 
    myDevice.setFullScreenWindow(null); 
} 

爲了進一步(和更完整的)的信息。請參閱Docs

+0

正在檢查 – mastaH

21

有可能獲得如有必要,Windows任務欄的高度:

Dimension scrnSize = Toolkit.getDefaultToolkit().getScreenSize(); 
Rectangle winSize = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); 

int taskBarHeight = scrnSize.height - winSize.height; 
1

您可以使用:

int taskbarheight = Toolkit.getDefaultToolkit().getScreenSize().height 
    - GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height(); 

,或者您可以使用,以及:

JFrame frame = new JFrame(); 
frame.setSize(GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getSize(); 
0

這是我寫的一個程序的一部分:

public enum Location { 
    TOP, RIGHT, BOTTOM, LEFT; 
} 

private static final class Taskbar { 
    public final Location location; 
    public final int width, height; 

    private Taskbar(Location location, int width, int height) { 
     this.location = location; 
     this.width = width; 
     this.height = height; 
    } 

    public static Taskbar getTaskbar() { 
     Rectangle other = GraphicsEnvironment.getLocalGraphicsEnvironment() 
       .getMaximumWindowBounds(); 
     return new Taskbar(other.x != 0 ? Location.TOP 
       : (other.y != 0 ? Location.LEFT 
         : (other.width == IFrame.width ? Location.BOTTOM 
           : Location.RIGHT)), IFrame.width 
       - other.width, IFrame.height - other.height); 
    } 
} 

本質上,主叫Taskbar.getTaskbar()將得到含有在其位置(TOPRIGHTBOTTOMLEFT),它的寬度,而其高度信息的任務欄。