0

我正在使用JTable具有 4 列的如何设置JTable来选择一行,但用户不应更改该行的值?

Jtable.setEnabled(false);

该语句对我不起作用,因为用户无法选择该行。

如何用您的答案替换此代码?

public void setModel()
{
    String[] colNames = {"Name","Email","Department","Status"};
    TableModel model = new DefaultTableModel(colNames,500);
    table.setModel(model);

    String insert = "select * from " + deptName;

    try
    {
        conn = ac.getConnection();
        stmt = conn.prepareStatement(insert);
        rs = stmt.executeQuery();
        int row = 0;   
        while(rs.next())
        {
            String[] rowData = new String[5];
            for(int i=1;i<=4;i++)
            {
                rowData[i-1] = rs.getString(i);
            }
            model.setValueAt(rowData[0], row, 0);
            model.setValueAt(rowData[1], row, 1);
            model.setValueAt(rowData[2], row, 2);                
            model.setValueAt(rowData[3], row, 3);                
            row++;  

        }
    }catch(SQLException s){}
    catch(ClassNotFoundException e)
        {e.printStackTrace();}
    finally
    {
        try
        {
            if(rs != null){rs.close();}
            if(stmt != null){stmt.close();}
            if(conn != null) {conn.close();}
        }
        catch(SQLException e){}
    }

}
4

4 回答 4

1

有偏见的我忍不住建议使用 JXTable(在SwingX 项目中:它支持在视图上配置可编辑性,包括每列和每表

// to disable editing for a particular column
table.getColumnExt(columnIndex).setEditable(false);
// to disable editing for the complete table
table.setEditable(false);
于 2013-03-26T12:03:18.547 回答
1

根据您创建表格模型的方式,您将需要覆盖TableModel#isCellEditable并返回false您希望不可编辑的所有单元格

查看如何使用表格了解更多信息

于 2013-03-26T08:46:53.210 回答
1

像这样扩展 DefaultTableModel

private class NoCellEditTableModel extends DefaultTableModel{

    @Override
    public boolean isCellEditable(int row, int column) {
       //all cells false
       return false;
    }
}

然后将其设置为您的 JTable

于 2013-03-26T08:48:02.970 回答
1

设置表的模型和覆盖isCellEditable方法

jtable.setModel(new TableModel() {

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
            return false;   
    }
});
于 2013-03-26T08:52:20.003 回答