簡単に言えば、フルスクリーンで作業しているゲームを作ろうとしています。
使用しようとしている次のコードがあります。
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 を拡張するクラス内で作業していることです。フレーム型の変数はありますが、クラス内に Window 型はありません。
JPanel についての私の理解では、それは一種のウィンドウですが、「これ」を 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) の後に、いくつかの冗長性または不要な呼び出しがある可能性があると予想しています。クリーンアップのアドバイスをいただければ幸いです...
また、ブロックエラーはそのようです。エラーを無視しています。エラーは一度だけ発生し、エラーの最初のインスタンスを無視するようにセットアップすると、これは正常に機能します...興味のある人は誰でも、そのブロックを削除できるかどうかを確認したい場合は、そこに追加情報を投稿できますが、私は心配していません…後で調べてみようかな。