gpt4 book ai didi

java - 未调用 AbstractTableModel setValueAt 方法

转载 作者:行者123 更新时间:2023-11-30 06:16:59 24 4
gpt4 key购买 nike

每当单击标题时,我都尝试使用 setValueAt 方法在我的 jtablemodel 中设置一个值。我目前有一个 MouseAdapter 正确显示正在单击的列,但未调用 board.setValueAt() 方法。

鼠标监听器。这会正确显示我单击的列。我试过使用 board.getModel().setValueAt() 但这也没有用。

public class HeaderListener extends MouseAdapter{
private JTable board;
public HeaderListener(JTable board){
this.board = board;
}

@Override
public void mouseClicked(MouseEvent event) {
Point point = event.getPoint();
int column = board.columnAtPoint(point);
System.out.println(column);
Data value = new Data(0,"yes");
board.setValueAt(value, 0, column);
}
}

表格模型。 “输入时的设置值”永远不会显示到控制台。当我尝试覆盖它时,它给我一个错误。

public class TableModel extends AbstractTableModel{
private Data[][] data;
private String[] columnNames = {"Move Here",
"Move Here",
"Move Here",
"Move Here",
"Move Here","Move Here"};

public TableModel(){
data = new Data[6][7];
Data test = new Data(0,"yes");
data[1][1] = test;
}

@Override
public int getRowCount() {
return data.length;
}

@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
@Override
public Object getValueAt(int row, int col) {
return (data[row][col]==null?"":data[row][col].getText());
}

public void setValueAt(Data data2, int row, int col){
System.out.println("Set value at entered");
data[row][col] = data2;
fireTableCellUpdated(row,col);
System.out.println(data[row][col].getText());
System.out.println(data[row][col].getPlayer());
}

}

创建板的主要方法...

JTable board = new JTable(new TableModel());
board.getTableHeader().addMouseListener(new HeaderListener(board));

谁能告诉我我做错了什么?

最佳答案

您的 setValueAt 方法签名与 AbstractTableModel 的签名不匹配,因此不会覆盖 super 自己的方法。第一个参数应该是对象,而不是数据。覆盖方法时始终使用 @Override 注释,以允许编译器进行检查以确保您的操作正确。

关于java - 未调用 AbstractTableModel setValueAt 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26442590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com