有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我创建了一个函数,将数据加载到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);
    } 
}

共 (2) 个答案

  1. # 1 楼答案

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

    编辑。 如果要在Netbeans IDE designer中执行此操作,请执行以下步骤:

    • Select the form on which the JTable is placed
    • From the Navigation Pane, expand JScrollPane and right-click on JTable and Select Customize Code as shown below:

    Navigator Pane

    • 在代码定制器上,选择第二个下拉列表,然后选择自定义属性。这使您能够编辑DefaultTableModel代码定义
    • 现在粘贴以下内容: {public boolean isCellEditable(int row, int column){return false;}}在最后一个收盘黑点之前(黑点

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

    • 按ok保存,工作完成

    Code Customizer

  2. # 2 楼答案

    正如其他人所说,您必须创建自己的DefaultTableModel并覆盖isCellEditable。要在Netbeans designer中使用它:

    • 右键点击你的桌子
    • 房地产->;密码
    • 在自定义创建代码中添加:new JTable(new MyModel())(假设您创建了MyModel扩展AbstractTableModel类)