简单地说,我正在尝试制作一款全屏游戏。
我尝试使用以下代码:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gs = ge.getDefaultScreenDevice();
if(!gs.isFullScreenSupported()) {
System.out.println("full-screen not supported");
}
Frame frame = new Frame(gs.getDefaultConfiguration());
Window win = new Window(frame);
try {
// Enter full-screen mode
gs.setFullScreenWindow(win);
win.validate();
}
问题是我在一个扩展 JPanel 的类中工作,虽然我有一个 Frame 类型的变量,但我在类中没有 Window 类型。
我对 JPanel 的理解是它是一个窗口,但我不能将“this”传递给 gs.setFullScreenWindow(Window win)... 我应该如何做呢?
有没有使用 JPanel 调用它的简单方法或类似方法?
有没有办法从我的 JPanel 中获取 Window 类型的东西?
-
编辑:以下方法更改 JFrame 的状态并每 10 毫秒调用一次:
public void paintScreen()
{
Graphics g;
try{
g = this.getGraphics(); //get Panel's graphic context
if(g == null)
{
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(frame.getExtendedState()|JFrame.MAXIMIZED_BOTH);
frame.add(this);
frame.pack();
frame.setResizable(false);
frame.setTitle("Game Window");
frame.setVisible(true);
}
if((g != null) && (dbImage != null))
{
g.drawImage(dbImage, 0, 0, null);
}
Toolkit.getDefaultToolkit().sync(); //sync the display on some systems
g.dispose();
}
catch (Exception e)
{
if(blockError)
{
blockError = false;
}
else
{
System.out.println("Graphics context error: " + e);
}
}
}
我预计在 if(g==null) 语句(所有 frame.somethingOrOther()s)之后可能会有一些冗余或不必要的调用,任何清理建议将不胜感激......
此外,块错误就是它看起来的样子。我忽略了一个错误。错误只发生一次,当设置忽略错误的第一个实例时,这可以正常工作...对于任何感兴趣的人,如果有人想查看是否可以删除该块,我可以在那里发布其他信息,但我不担心...我以后可能会调查它。