在jtables中设置值

时间:2015-06-24 20:02:21

标签: java swing jtable defaulttablemodel

我在尝试设置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);
}

2 个答案:

答案 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);