2011-07-27 29 views
10

No puedo encontrar la forma de obtener dinámicamente la altura de la barra de tareas de Windows para configurar la pantalla completa de mi aplicación.
Como saben, la barra de tareas puede estar en cuatro posiciones: abajo, arriba, izquierda o derecha, así que estoy preguntando si es posible conocer también la posición actual para establecer los límites de la ventana.Altura/ancho de la barra de tareas de Windows

EDIT: Usando enlace Lukas I tryied esto:

GraphicsDevice myDevice; 
Window myWindow; 

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

Pero yo estoy poniendo un NullPointerException

+0

¿Estás utilizando Jframe/frame? – Pratik

+0

sí lo siento, estoy usando un JFrame – mastaH

Respuesta

5

Al crear su JFrame. Hacer una llamada al método setExtendedState() en la API JFrame

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

El ajuste MAXIMIZED_BOTH fijará su ventana a pantalla completa y automáticamente tener en cuenta la posición de la barra de tareas.

+0

Esto podría ser una solución, pero me esperaba una palanca método para ajustar la pantalla completa JFrame y volver a su tamaño "normal". – mastaH

+0

Se podría establecer un tamaño predeterminado como 'jFrame.setSize (450.450)' 'y luego llamar jFrame.setExtendedState (JFrame.MAXIMIZED_BOTH);' cuando se pulsa el botón de maximizar en la parte superior de la ventana se alternará entre los dos tamaños. –

+0

¿Hay alguna manera de alternar entre max y normal con un botón? – mastaH

2

Si desea que su aplicación se ejecute en modo de pantalla completa, puede introducirlo por conseguir una adecuada GraphicsDevice y utilizando el setFullScreenWindow(Window)-method:

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

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

Para mayor (y más completa) de la información. ver la Docs)

+0

mirando en este momento – mastaH

21

Es posible obtener la altura barra de tareas de Windows si es necesario:

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

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

que puede utilizar:

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

o puede utilizar, así:

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

Este es parte de un programa que escribí:

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); 
    } 
} 

Esencialmente, llamando Taskbar.getTaskbar() dará una barra de tareas que contiene información sobre su ubicación (TOP, RIGHT, BOTTOM, LEFT), su anchura, y su altura.

Cuestiones relacionadas