ボードに作品を描くように見えることはできませんBoardView.java私はJavaでチェッカーゲームに取り組んでいますし、
package checkers.views;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BoardView extends JPanel{
public void paint(Graphics g){
g.setColor(Color.DARK_GRAY);
g.fillRect(100, 100, 400, 400);
for(int i = 100; i <= 400; i+=100){
for(int j = 100; j <= 400; j+=100){
g.setColor(Color.LIGHT_GRAY);
g.fillRect(i, j, 50, 50);
}
}
for(int i = 150; i <= 450; i+=100){
for(int j = 150; j <= 450; j+=100){
g.setColor(Color.LIGHT_GRAY);
g.fillRect(i, j, 50, 50);
}
}
}
}
PiecesView.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import checkers.models.*;
import checkers.utilities.*;
import checkers.business_logic.*;
public class PieceView extends JPanel{
public void paint(Graphics g, Board checkersBoard){
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
int color = checkersBoard.piecesGrid[row][col].getColor();
if(color == ConstantsHolder.RED){
g.setColor(Color.RED);
g.fillOval(col, row, 60, 60);
}
else if(color == ConstantsHolder.BLACK){
g.setColor(Color.BLACK);
g.fillOval(col, row, 60, 60);
}
}
}
}
}
BoardViewDrawer.java
import checkers.utilities.*;
import checkers.models.*;
import checkers.views.*;
import checkers.business_logic.*;
public class BoardViewDrawer {
public static void drawBoard(){
JFrame Board = new JFrame();
Board.setSize(600,600);
Board.getContentPane().add(new BoardView());
Board.setLocationRelativeTo(null);
Board.setBackground(Color.BLACK);
Board.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Board.setVisible(true);
Board.setTitle("Checkers Palooza");
Board.setLayout(new GridLayout(8,8));
Board.getContentPane().add(new PieceView());
}
I thiこれはすべて理にかなっていますが、私がここで間違っていることはわかりません。私はそれに基づいて作品を試して設定するために私のボードのロジックを使用しています。誰かが洞察力を持っているか、私がやっていることを見ているだけなら、それは愚かな助けになると大変感謝します。
'' 'PieceView'''でペイントメソッドをどこで呼び出すのですか?私はここにそれを見ない。 –
私はボードをやったのと同じ方法でやろうとしていませんでした。 –
これはスーパークラスのメソッドをオーバーライドしているために動作しますが、ピースビューの場合はメソッドのシグネチャが間違っているため、メソッドが呼び出されません。 '' checkersBoard'''を引数として使うことはできません。ヒント:メソッドをオーバーライドしていることを確認するには、 '' @ Override'''アノテーションを使用する必要があります。 –