Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make a jtable not editable in java?

I created a function which loads data into a JTable. Everything's working fine except that all the cells in this table are editable. Btw, I used defaultTableModel for the table model. Im doing this in Netbeans IDE. Please help. Here's my code:

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);
    } 
}
like image 785
John Avatar asked May 03 '12 13:05

John


People also ask

How do you stop a JTable from being editable?

JTable table = new JTable(); table. setEnabled(false);

How do you make a JTable column not movable?

setReorderingAllowed() method and set the value as false.

Is JTable editable by default?

The isCellEditable() method of JTable (or the TableModel) controls whether a cell is editable or not. By default it just return "true". So you can override the method to return a boolean value that is set by your "Modify" button.


4 Answers

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

Edited. If you are doing this in Netbeans IDE designer, follow the steps below:

  • 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

  • On the code customizer, select the second drop down and choose custom property. This enables you to edit the DefaultTableModel code definition.
  • Now paste this: {public boolean isCellEditable(int row, int column){return false;}} before the last closing blacket );

Your final setup should look as shown below:

  • Press ok to save - and job done.

Code Customizer

like image 51
Bitmap Avatar answered Sep 21 '22 13:09

Bitmap


If you use DefaultTableModel you can override the method isCellEditable and implement it when constructing GUI:

table.setModel(new DefaultTableModel() {

    @Override
    public boolean isCellEditable(int row, int column) {
       return false;
    }
});
like image 35
Cloud Avatar answered Sep 20 '22 13:09

Cloud


Using Netbeans ANOTHER WAY is possible. if you want to continue using the default table model as the OP mentions It's not necessary to create a new table model if you don't want to.

  1. Select the JTable "properties"

  2. Select the "TableModel" field in "properties" which will open another DialogBox.

  3. From there it is possible to modify the "editable" checkbox field for each column.

Not sure from which version this starts but I'm using Netbeans 7.2

like image 20
user2485933 Avatar answered Sep 20 '22 13:09

user2485933


Try This

JTable table = new JTable();
table.setEnabled(false);
like image 36
Izanagi Avatar answered Sep 22 '22 13:09

Izanagi