Высота/ширина панели задач Windows

Я не могу понять, как получить динамическую высоту панели задач Windows, чтобы установить мое приложение в полноэкранном режиме.
Как вы знаете, панель задач может находиться в четырех позициях: внизу, сверху, влево или вправо, поэтому мне интересно, можно ли также узнать текущую позицию для установки границ окна.

EDIT: Используя ссылку Lukas, я попытался это сделать:

GraphicsDevice myDevice;
Window myWindow;

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

Но я получаю NullPointerException

Ответ 1

При создании JFrame. Вызов метода setExtendedState() в API JFrame

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

Параметр MAXIMIZED_BOTH устанавливает ваше окно в полноэкранный режим и автоматически учитывает положение панели задач.

Ответ 2

При необходимости можно получить высоту панели задач Windows:

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

int taskBarHeight = scrnSize.height - winSize.height;

Ответ 3

Если вы хотите, чтобы ваше приложение запускалось в полноэкранном режиме, вы можете ввести его, получив подходящий GraphicsDevice и используя setFullScreenWindow(Window) -method:

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

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

Для дальнейшей (и более полной) информации. см. Документы)

Ответ 4

Вы можете использовать:

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

или вы также можете использовать:

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

Ответ 5

Это часть программы, которую я написал:

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() даст панель задач, содержащую информацию о ее местоположении (TOP, RIGHT, BOTTOM, LEFT), ее ширину и высоту.