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);
}
}
JTable table = new JTable(); table. setEnabled(false);
setReorderingAllowed() method and set the value as false.
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.
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:
{public boolean isCellEditable(int row, int column){return false;}}
before the last closing blacket );
Your final setup should look as shown below:
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;
}
});
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.
Select the JTable "properties"
Select the "TableModel" field in "properties" which will open another DialogBox.
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
Try This
JTable table = new JTable();
table.setEnabled(false);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With