如何使jtable在java中不可编辑?

Joh*_*ohn 10 java swing netbeans jtable

我创建了一个将数据加载到a中的函数JTable.一切正常,但该表中的所有单元格都是可编辑的.顺便说一句,我用defaultTableModel的是桌子模型.我在Netbeans IDE中这样做.请帮忙.这是我的代码:

private void updateTable(String searchText){

    if(searchText != null)
        this._sqlCmd = this._sqlCmd + " WHERE "+columnCombo.getSelectedItem()+" LIKE '%"+searchText+"%'";
    jTable1.setSurrendersFocusOnKeystroke(true);
    table = (javax.swing.table.DefaultTableModel) jTable1.getModel();  

    try{
        table.setRowCount(0);
    }catch(Exception e){}

    try {
        ResultSet rs = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY).executeQuery(_sqlCmd);
        while (rs.next()){
            Object[] data = new Object[numOfCols];
            for(int i=0; i<data.length; i++){
                data[i] = rs.getObject(i+1);
            }
            table.addRow(data);
        }
        table.fireTableDataChanged();


    } catch (SQLException ex) {
        Logger.getLogger(FindContactGrid.class.getName()).log(Level.SEVERE, null, ex);
    } 
}
Run Code Online (Sandbox Code Playgroud)

Bit*_*map 28

 private TableModel model = new DefaultTableModel(data, columnNames)
  {
    public boolean isCellEditable(int row, int column)
    {
      return false;//This causes all cells to be not editable
    }
  };
  private JTable table = new JTable(model);
Run Code Online (Sandbox Code Playgroud)

编辑.如果您在Netbeans IDE设计器中执行此操作,请按照以下步骤操作:

  • 选择放置JTable的表单
  • 在导航窗格中,展开JScrollPane并右键单击JTable并选择Customize Code,如下所示:

导航窗格

  • 在代码自定义程序中,选择第二个下拉列表并选择自定义属性.这使您可以编辑DefaultTableModel代码定义.
  • 现在粘贴这个: {public boolean isCellEditable(int row, int column){return false;}}在最后一次关闭blacket之前);

您的最终设置应如下所示:

  • 按确定保存 - 完成工作.

代码定制器


Clo*_*oud 7

如果使用DefaultTableModel,则可以覆盖方法isCellEditable并在构造GUI时实现它:

table.setModel(new DefaultTableModel() {

    @Override
    public boolean isCellEditable(int row, int column) {
       return false;
    }
});
Run Code Online (Sandbox Code Playgroud)