Java Windows 8全屏?
我的类Java Windows 8全屏?,java,fullscreen,windows-8,Java,Fullscreen,Windows 8,我的类主窗口中有此代码: public MainWindow() { super("Shouldn't be visible..."); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setAlwaysOnTop(true); setUndecorated(true); setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
主窗口中有此代码
:
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);
}
}
在Windows7+Java6中,它可以像全屏一样正常工作。我可以点击任何地方没有问题。然而,在Windows8+Java6中,除了靠近顶部的大约100个像素和“开始”按钮所在的框之外,所有最左边的像素列都被弄乱了。在列和框中,我的光标再次变为普通鼠标,窗口将忽略我的单击。在“开始”框中,单击将显示“开始”菜单,而不是给我的程序一个单击事件。这似乎是Java的一个问题,因为除了W8,它在任何地方都可以工作。您知道哪里出了问题/如何解决它吗?如果您的主窗口类是JFrame,那么您就不必使用
getContentPane()
。我认为您不需要设置全屏功能。请在全屏上尝试此功能,通常最好使用原始屏幕大小的一半宽度和高度
Toolkit toolkit = Toolkit.getDefaultToolKit();
Dimension d = toolkit.getScreenSize();
int w = d.width;
int h = d.height;
setSize(w,h);
我以前也遇到过类似的问题,Windows机器上的窗口底部被切断,添加这些行修复了该问题:
frame.setLocationByPlatform(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
假设您的MainWindow类扩展了JFrame,调用这两个方法就可以了。您可以轻松地将其放入构造函数中
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width, screenSize.height);
从未正确回答过这个问题。。。这是Windows8本身的JRE问题。现在已修复。Windows 8仍然是测试版,因此不要期望与您的驱动程序和Java VM完全兼容。但我们能期望它得到修复吗?Windows 8启动后,他们将进行修复,可能在之前;)它必须被修复,但我不知道什么时候。如果它在除W8之外的任何地方都能工作,我会说这是Win8的问题,而不是Java的问题。dumb one,你试过windows 8+Java 7吗?
public NewFrame(){
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
this.setVisible(true);
}