Java Windows 8 на весь экран? - PullRequest
9 голосов
/ 03 марта 2012

У меня есть этот код внутри моего класса MainWindow:

public MainWindow() {
    super("Shouldn't be visible...");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setAlwaysOnTop(true);
    setUndecorated(true);
    setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));

    addFocusListener(new FocusLostExiter());
    addKeyListener(new EscListener());

    setContentPane(canvas);

    getContentPane().setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize());
    pack();
    setResizable(false);
}

public void setFullScreen(boolean b) {
    if(!b) {
        device.setFullScreenWindow(null);
    }
    setVisible(b);
    //System.out.println(device.getFullScreenWindow());
    if(b) {
        device.setFullScreenWindow(this);
    }
}

В Windows 7 + Java 6 он работает в полноэкранном режиме просто отлично.Я могу нажать где угодно без проблем.Однако в Windows 8 + Java 6 весь левый столбец пикселей, за исключением примерно 100 рядом с верхом, и поле, где должна быть кнопка запуска, перепутаны.В столбце и поле мой курсор снова становится обычной мышью, и окно игнорирует мои щелчки.В окне «Пуск» щелчок вызывает меню «Пуск» вместо того, чтобы вызывать в моей программе событие щелчка.Это похоже на проблему с Java, потому что она работает везде, кроме W8.Вы знаете, что не так / как это исправить или обойти?

Ответы [ 6 ]

1 голос
/ 20 июня 2012
public NewFrame(){

    this.setDefaultCloseOperation(EXIT_ON_CLOSE);

    this.setSize(Toolkit.getDefaultToolkit().getScreenSize());

    this.setVisible(true);

}
1 голос
/ 30 мая 2012

У меня раньше была похожая проблема, нижняя часть окна на компьютерах с Windows была обрезана, и добавление в эти строки устранило проблему:

frame.setLocationByPlatform(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

Предполагая, что ваш класс MainWindow расширяет JFrame, вызов этих двух методов должен помочь.

0 голосов
/ 03 октября 2012

Никогда не отвечал правильно ... Это была проблема с JRE на самой Windows 8.Теперь исправлено.

0 голосов
/ 01 июня 2012

Вы можете просто разместить это внутри своего конструктора

 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
 setBounds(0,0,screenSize.width, screenSize.height);
0 голосов
/ 16 мая 2012

Попробуйте на полном экране, обычно предпочтительнее использовать половину ширины и высоты исходного размера экрана

Toolkit toolkit = Toolkit.getDefaultToolKit();

Dimension d = toolkit.getScreenSize();

int w = d.width;

int h = d.height;

setSize(w,h);
0 голосов
/ 15 апреля 2012

Что ж, если ваш класс MainWindow является JFrame, вам не нужно использовать getContentPane().Я не думаю, что вам нужна функция setFullScreen.

...