【发布时间】:2014-04-29 06:20:51
【问题描述】:
我正在做一个国际象棋游戏,我需要制作一个记录每一步棋的日志表。 LogTable 类是这样的:
public class LogTable {
private DefaultTableModel model;
private JTable table;
public LogTable(JPanel panel){
String[] columnNames = {"Move No.",
"White",
"Black"};
model = new DefaultTableModel(columnNames, 0);
table = new JTable();
//model.isCellEditable(i, i1)
table.setModel(model);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
//Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(table);
panel.add(scrollPane);
}
public void newMove(chessPiece piece){
if (piece.getColor() == 0){
Object[] newRow = new Object[3];
newRow[0] = model.getRowCount()+1;
newRow[1] = piece.sayPos();
newRow[2] = " ";
model.addRow(newRow);
}
else {
model.setValueAt(piece.sayPos(), model.getRowCount(), model.getColumnCount());
}
}
}
但是在第一个黑棋中它抛出了一个 ArrayOutOfBoundsException。 newMove 函数在 chessPiece 类中调用:
public void move(int newX, int newY, JPanelSquare jPanelSquareGrid[][], LogTable logTable){
resetShowValidMoves(jPanelSquareGrid);
logTable.newMove(this);
}
其余的移动代码在每个部分中,调用 super.我正在使用 DefaultTableModel。
【问题讨论】:
标签: java swing netbeans jtable indexoutofboundsexception