プロが教えるわが家の防犯対策術!

JAVAゲームプログラムミング教室という本でただいまゲームを作っているのですが
本にそって、それどおりに進めていたのですが、ウィンドウの背景色を決めるところでエラーも出ていないのに指定された背景色になりません

以下にプログラムを書きます

package jp.aroro.minigame;

import java.awt.Color;
import java.awt.Insets;
import javax.swing.JFrame;

public class GameTestMain {
JFrame frame1;

GameTestMain(){
frame1=new JFrame("ゲームテスト");
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setBackground(Color.WHITE);
frame1.setResizable(false);

frame1.setVisible(true);
Insets insets = frame1.getInsets();//
frame1.setSize(600+insets.left+insets.right,400+insets.top+insets.bottom);
frame1.setLocationRelativeTo(null);
}

public static void main(String[] args) {
GameTestMain gtm = new GameTestMain();
}
}

flame1のセットに関してはカラー以外問題なく実行されており、コンパイラ時にもエラーが出ません。
しかし、背景色は表示されません。
本の実際の実行画面では無色?→白色となっておるのですが、無色(グレーみたいな)のままです。

ちなみにEclipseのバージョンは3.0.1で
関係あるか分かりませんが
Java Runtime Environment Version 6 Update 2
というものもダウンロードしてあります。

原因が分かる方はご教授ください。

A 回答 (1件)

 こんにちは。



 このコードを実行すると、背景色が変わらないことを、確認しました。

 JFrameのソースコードを見ると、updateメソッドがオーバーライドされ、背景色の塗り潰しがキャンセルされています。
 つまり、JFrameの背景色を変えても、変化がないということでしょう。

 JFrameでは、コンポーネントの描画は、グラスペインやコンテントペインに任されています。
 つまり、ここでは、コンテントペインの背景色を変えるのが正しいように思います。

frame1.getContentPane().setBackground(Color.WHITE);

 ただ、ゲームを作るのにJFrameのpaintメソッドやpaintComponentメソッドをオーバーライドして、ごりごり書くのでしたら、この背景色の変更は意味ないですけどね。

 ゲームを作るのだとしたら、JPanelなどを継承して、その中に実装し、それをJFrameのコンテントペインにaddするのが、いいんだと思いますけど。
    • good
    • 0
この回答へのお礼

frame1.getContentPane().setBackground(Color.WHITE);
これで、背景が白になりました。
まだ継承とか分かりませんが、精進していきます。
ありがとうございました。

お礼日時:2007/09/08 19:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!