我正在用java編程一個國際象棋遊戲,此刻我正在構建一個基本界面。它只是一個8x8的按鈕陣列,將顯示在窗口中。我已經爲這些按鈕編碼,並且已經讓電路板正確顯示。但是,當我將其與遊戲的其餘部分連接起來時,遊戲窗口在運行時崩潰,我必須強制退出Java應用程序。這是我的代碼:Java Swing框架在打開時崩潰?
package Chess_Game;
import javax.swing.SwingUtilities;
import Chess_Interface.Iboard;
public class Game_Tester
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Game G = new Game();
Iboard I = new Iboard(G.getBoard().getArray(), G.getSides());
I.setVisible(true);
while(!(G.isGameOver()))
{
boolean redo = true;
while(redo)
{
int row = 0;
int col = 0;
int nRow = 0;
int nCol = 0;
System.out.println("Click the piece you want to move.");
while(!(I.getBool())){}
if(I.getBool())
{
row = I.getRow();
col = I.getCol();
I.setBool(false);
}
System.out.println("Click the place you want to move to.");
while(!(I.getBool())){}
if(I.getBool())
{
nRow = I.getRow();
nCol = I.getCol();
I.setBool(false);
}
if(G.canMove(row, col, nRow, nCol))
{
G.move(row, col, nRow, nCol, I);
redo = false;
}
else
{
System.out.println("You cant move there! Try again!");
}
}
I.updateBoard(G.getBoard().getArray(), G.getSides());
}
}
});
}
}
董事會正常顯示,當我註釋掉主while循環(和一切在它的內部),我認爲問題在於某處裏面就有,但我一直無法找到它。我也在網上尋找類似的遊戲循環問題,但所有這些都是針對涉及幀速率和跨越java swing框架的移動的遊戲,這些並不存在於我的代碼中。
任何幫助將不勝感激。
1)請學習常見的[Java命名約定](http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307)(具體用於名稱的情況)爲類,方法和屬性名稱並一致使用它。 2)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –