Java Windows 8全屏?

时间:2012-03-03 18:01:33

标签: java fullscreen windows-8

我在班级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 个答案:

答案 0 :(得分:1)

之前我遇到过类似的问题,窗口的底部在Windows机器上被切断了,添加这些行修复了问题:

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

假设你的MainWindow类扩展了JFrame,调用这两个方法就可以了。

答案 1 :(得分:1)

public NewFrame(){

    this.setDefaultCloseOperation(EXIT_ON_CLOSE);

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

    this.setVisible(true);

}

答案 2 :(得分:0)

好吧,如果您的MainWindow类是JFrame,那么您不必使用getContentPane()。我认为你不需要setFullScreen函数。

答案 3 :(得分:0)

尝试全屏显示,通常最好使用原始屏幕尺寸的一半宽度和高度

Toolkit toolkit = Toolkit.getDefaultToolKit();

Dimension d = toolkit.getScreenSize();

int w = d.width;

int h = d.height;

setSize(w,h);

答案 4 :(得分:0)

您可以轻松地将其放置在构造函数

 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
 setBounds(0,0,screenSize.width, screenSize.height);

答案 5 :(得分:0)

从未正确回答过......这是Windows 8本身的JRE问题。现在修好了。