迷路を生成する小さな JPanel プログラムを作成しています。私のコードはすべて機能しますが、迷路の生成を実際に表示したいと考えています。プログラムを編集して、paintComponent 関数が進行中の迷路を表示するようにしました。しかし、私は JPanel オブジェクトが渡されている別のクラスにいるので、表示を「更新」できます。
paintComponent 関数を呼び出してすべてのセルを描画し、表示を更新するにはどうすればよいですか?
パネルの構成は次のとおりです。
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
gamePanel = new GamePanel();
controlPanel = new ControlPanel();
mainPanel.add(gamePanel, BorderLayout.CENTER);
mainPanel.add(controlPanel, BorderLayout.SOUTH);
mainPanel.revalidate();
これは、再描画時に呼び出されると予想されるコードです。
protected void paintComponent(Graphics pen){
if(started){
int count=0;
for (MapCell c:coms){
if (c.type!='w'){
count++;
}
c.paint(pen);
}
System.out.println("White space: " +count);
System.out.println("Components: "+coms.size());
for(Anno an:mapGen.ans){
an.draw(pen,img,colWidth,rowHeight);
}
}
迷路の生成後、print ステートメントは正常に機能しますが、画像「Anno」のみが描画され、その後ろに跡が残ります。リストが正しいデータを取得していることを確認しました。