
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
というものもダウンロードしてあります。
原因が分かる方はご教授ください。
No.1ベストアンサー
- 回答日時:
こんにちは。
このコードを実行すると、背景色が変わらないことを、確認しました。
JFrameのソースコードを見ると、updateメソッドがオーバーライドされ、背景色の塗り潰しがキャンセルされています。
つまり、JFrameの背景色を変えても、変化がないということでしょう。
JFrameでは、コンポーネントの描画は、グラスペインやコンテントペインに任されています。
つまり、ここでは、コンテントペインの背景色を変えるのが正しいように思います。
frame1.getContentPane().setBackground(Color.WHITE);
ただ、ゲームを作るのにJFrameのpaintメソッドやpaintComponentメソッドをオーバーライドして、ごりごり書くのでしたら、この背景色の変更は意味ないですけどね。
ゲームを作るのだとしたら、JPanelなどを継承して、その中に実装し、それをJFrameのコンテントペインにaddするのが、いいんだと思いますけど。
frame1.getContentPane().setBackground(Color.WHITE);
これで、背景が白になりました。
まだ継承とか分かりませんが、精進していきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- 物理学 波の合成についてです E1(z,t)=A0cos(kz-ωt+Φ) E2(z,t)=A0cos(kz 1 2022/10/10 06:35
- 英語 I am used to cutting apples. の場合 S→I V→am used to 1 2023/04/03 07:52
- 工学 ちなみになぜv=(v・e1)e1+(v・e2)e2はe1やe2が、正規直交基底でないと成り立たないと 2 2022/12/22 17:22
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
- 英語 "where I am"のニュアンスについて 3 2022/12/08 13:51
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- 工学 以前、線形代数からフーリエ級数展開を導く上で 式v=(v, e1)e1+(v, e2)e2+…+(v 6 2022/06/29 17:24
- Excel(エクセル) エクセルの表で A1にデータの入力規則でリストを作って、 (リス、キリン、ゾウとします) リストを選 4 2022/07/15 09:29
- 物理学 平行板コンデンサに誘電率ε1を持つ誘電体1と誘電率ε2を持つ 誘電体2を隙間なく詰める。極板の面積を 1 2023/08/10 22:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
javascriptからjavaを呼び出したい
-
final修飾子を使っているのに、...
-
配列のメソッド
-
0歳児の指しゃぶりに関して
-
ウィンドウを最前面にできません
-
二分探索木のheight(高さ?)を見...
-
Java Applet で SQL を操作す...
-
mainメソッドのthrows節で設定...
-
VBPをダブルクリックするとたま...
-
ArrayListのgetメソッドが実行...
-
vbaエクセルマクロ RemoveDupli...
-
引数は省略できません。とのコ...
-
frameとgetメソッド
-
VBA コピーが出来ません…!
-
C#.net Define文
-
Eclipse、clone利用時に型の安...
-
アプリケーション内でのダブル...
-
【sendkeysメソッドが動かずに...
-
JAVAのメソッドがありますが
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
【sendkeysメソッドが動かずに...
-
mainメソッドのthrows節で設定...
-
VBA コピーが出来ません…!
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
0歳児の指しゃぶりに関して
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
配列のメソッド
-
CALLされていないメソッドを見...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
VBPをダブルクリックするとたま...
-
ウィンドウを最前面にできません
-
処理内容がほぼ同じメソッドの...
-
Application.Wait の参照設定
-
C#.net Define文
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA でExcelを終了したい...
おすすめ情報