1
我正在爲CS課程開發一款棋盤遊戲,我已經開始使用引擎 - 它的骨幹 - 並且已經完善了它,但我仍然停留在GUI部分。在引擎中,我有一個雙精度數組來初始化棋子,並且它有一個getWinner和移動方法。在GUI部分,我創建了我的JFrame並將其佈局設置爲gridlayout,並且我有另一個雙數組,它檢查引擎的陣列並相應地打印棋盤上的棋子。但是,每當我移動時,引擎的陣列寄存器此舉,但它不會顯示在我的JFrame ..我已經將如何做到這一點不知道.. 這裏是我的GUI包主類:如何讓我的JFrame顯示一個JPanel數組來更新自己?
package eg.edu.guc.loa.gui;
import java.awt.*;
import java.util.ArrayList;
import javax.swing.*;
import eg.edu.guc.loa.engine.*;
import eg.edu.guc.loa.engine.Point;
@SuppressWarnings("serial")
public class LOA extends JFrame{
static Tiles[][] Jboard;
static Board b = new Board();
static Color temp;
static Color col1 = Color.DARK_GRAY;
static Color col2 = Color.LIGHT_GRAY;
static JFrame LOA = new JFrame();
JButton b1, b2;
public LOA(){
Jboard = new Tiles[8][8];
LOA.setLayout(new GridLayout(8, 8));
initBoard();
LOA.setSize(600, 600);
LOA.setVisible(true);
LOA.setLocationRelativeTo(null);
LOA.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b.printBoard();
}
public static void initBoard(){
remove();
b.printBoard();
for(int i = 0; i<8; i++){
if (i%2 == 0){
temp = col1;
}
else{
temp = col2;
}
for(int j = 0; j<8; j++){
Jboard[i][j] = new Tiles(temp, i, j);
LOA.getContentPane().add(Jboard[i][j]);
if (temp.equals(col1)){
temp = col2;
}
else{
temp = col1;
}
if(b.getPiece(new Point(j, i)).getPlayer() == BoardCell.PLAYER_1_PIECE){
Jboard[i][j].hasChecker(true);
Jboard[i][j].setWhite(true);
Jboard[i][j] = new Tiles(temp, i, j);
}
if(b.getPiece(new Point(j, i)).getPlayer() == BoardCell.PLAYER_2_PIECE){
Jboard[i][j].hasChecker(true);
Jboard[i][j].setWhite(false);
Jboard[i][j] = new Tiles(temp, i, j);
}
}
}
}
public static void remove(){
for(int i = 0; i<8;i++){
for(int j = 0; j<8; j++){
if(Jboard[i][j] != null)
LOA.remove(Jboard[i][j]);
}
}
}
public static void main (String [] args){
new LOA();
}
}
任何幫助將非常感激。 。 提前致謝。 ()是我在刪除舊框架和建立一個基於新的更新陣列(與移動片段)的新的嘗試,這顯然失敗了。