2011-07-27 47 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),它的宽度,而其高度信息的任务栏。