BoardView.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()); }
我认为这一切都是有道理的,但我不确定我在这里做的不对。我正在使用我的董事会的逻辑,试图在此基础上设置各部分。如果任何人有任何洞察力或仅仅看到我正在做的事情,那就是愚蠢的帮助,我们将非常感激。
发布于 2016-04-13 17:16:27
paint方法在PieceView中永远不会被调用,因为它没有正确地覆盖paint方法。这需要在以下方面签字:
public void paint(Graphics g);就像在BoardView类中一样。
如果要在save方法中使用checkersBoard,可以将其传递给构造函数,并将其保存到绘图时:
public class PieceView extends JPanel{
private Board checkersBoard;
public PieceView(Board checkersBoard) {
this.checkersBoard = checkersBoard;
}
@Override // makes sure you're overriding
public void paint(Graphics g){
// paint code here
}
...
}这样,您就可以在checkersBoard方法中自由使用paint。
https://stackoverflow.com/questions/36604889
复制相似问题