javaでのコンテントペインの使い方についてです
public class GameTestMain {
JFrame frame1;
BufferStrategy bstrategy;
int count = 0;
GameTestMain(){
frame1 = new JFrame("ゲームテスト");
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setVisible(true);
Insets insets = frame1.getInsets();
frame1.setSize(600 + insets.left + insets.right,
400 + insets.top + insets.bottom);
frame1.setResizable(false);
frame1.setLocationRelativeTo(null);
Container pane = frame1.getContentPane();
pane.setBackground(Color.WHITE);
frame1.setIgnoreRepaint(true);
frame1.createBufferStrategy(2);
bstrategy = frame1.getBufferStrategy();
Timer t = new Timer();
t.schedule(new MyTimerTask(), 0, 500);
}
public static void main(String[] args) {
GameTestMain gtm = new GameTestMain();
}
class MyTimerTask extends TimerTask{
public void run () {
Graphics g = bstrategy.getDrawGraphics();
if (bstrategy.contentsLost()==false){
Insets insets = frame1.getInsets();
g.translate(insets.left, insets.top);
g.setColor(Color.BLUE);
g.fillRect(0, 0, 100, 100);
bstrategy.show();
g.dispose();
}
}
}
}
(文字数の関係でimport文は省略)
四角形を表示させる部分を追記したところ、背景が白でなくなってしまいました。
以前、Jframeに直接描写するのではなく、コンテントペインという透明レイヤーのインスタンスを取得し、そこに色々と表示させていくということを耳にしました。
背景を白にしたのが反映されないのは、四角形をコンテントペインのインスタンスでなくframe1に直接表示させているからではないかと思うのですが、背景の時に作製した「pane」とは別に新しくコンテントペインのインスタンスを取得し、そこに描写するのがいいでしょうか?
どちらにしてもコンテントペインのインスタンスに四角形を描写する方法がわかりません。
背景の部分についてはネットで同じような質問をされている方がいたので、
その回答を元に記入しました。
今読んでいる入門本、「JAVAわくわくゲームプログラミング教室」だとコンテントペインなしで解説されているのですが、せっかくなのでコンテントペインも同時に導入しながら進めたいです。
これからこの本で簡単なゲームを作成するところまでやっていきますので、
コンテントペインの大まかな仕組みや使い方を理解していなければ同じように躓くと思います。
なので、今この場を切り抜ける方法も教えて欲しいのですが、コンテントペインの使い方がわかる書籍なども知っている方がいれば教えていただけないでしょうか。
よろしくお願いします。