我在尝试设置Jtable的值时遇到问题:jTable1。以下称为重置的方法是我正在尝试创建的拼图15的一部分。这是调用的方法,用于将值分配给jTable1的每个字段。假设jTable1已经初始化,因此是defaulttablemodel:model。谁能告诉我为什么在运行代码时价值不会出现?
private void reset(){
int count=0;
String val=" "+count;
blankRow=3;
blankCol=3;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
model.setValueAt(val,i,j);
count++;
}
}
model.setValueAt(null, blankRow, blankCol);
jTable1=new JTable(model);
jTable1.setBackground(Color.WHITE);
}
答案 0 :(得分:1)
您正在创建一个全新的JTable对象,该对象与显示的对象不同。不要这样做,而是设置当前显示的JTable的模型。这个 可以 由jTable1变量引用,但我们无从知晓。如果它确实引用了可视化的JTable,那么只需删除该行,
// jTable1 = new JTable(model);
并将其更改为:
jTable1.setModel(model); // change with this
请注意,如果模型变量引用显示的JTable的实际模型,则整个方法可以简化为:
model.setRowCount(0);
另请注意,您将要避免在使用时使用幻数,因为这种代码非常危险,并且如果您稍后更改表格,则存在索引超出范围的风险。
答案 1 :(得分:0)
model.setValueAt(null, blankRow, blankCol);//If you set null value nothing wont be there obviously
jTable1=new JTable(model);//Don't do this more than one as Swing is not a thread safe
jTable1.setBackground(Color.WHITE);//and this too
您忘记在setValueAt
中设置使用val
并且不需要模型来设置值。您可以使用
jTable1.setValueAt(val, blankRow, blankCol);