Make Jtable Noneditable without using setModel ()

I want to make my JTable Non-editable

How I use the following code to set strings using SetModel ():

jTable1.setModel(DbUtils.resultSetToTableModel(rs)); //Resultset is added as each row using r2xml JAR file

I can not use the following code:

jTable1.setModel(new DefaultTableModel() {

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

Since we cannot use two setModel () for jTable.

How to overcome this problem? I want to setresult and make jTable Noneditable.

+4
source share
2 answers

Here are two ways to achieve this:

  • TableModel, , DbUtils, isCellEditable(), false, . , DbUtils , .

  • JTable isCellEditable() false ( isCellEditable()). , Swing , .

# 1

:

class MyModel implements TableModel {
    private final TableModel m;
    public MyModel(TableModel m) {
        this.m = m;
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        // This is how we disable editing:
        return false;
    }

    // The rest of the methods just forward to the other model:

    @Override
    public int getRowCount() {
        return m.getRowCount();
    }

    @Override
    public int getColumnCount() {
        return m.getColumnCount();
    }

    // ...and all other methods which I omit here...
}

:

jTable1.setModel(new MyModel(DbUtils.resultSetToTableModel(rs)));

# 2

JTable :

JTable jtable1 = new JTable() {
    @Override
    public boolean isCellEditable(int row, int column) {
        // This is how we disable editing:
        return false;
    }
};

:

// You can set any model, the table will not be editable because we overrode
// JTable.isCellEditable() to return false therefore the model will not be asked
// if editable.

jTable1.setModel(DbUtils.resultSetToTableModel(rs));
+4

jTable jTable.disable();

0

All Articles