J'ai créé une fonction qui charge des données dans une JTable
. Tout fonctionne bien sauf que toutes les cellules de ce tableau sont modifiables. Btw, j'ai utilisé defaultTableModel
pour le modèle de table. Je fais cela dans l'EDI Netbeans. S'il vous plaît aider. Voici mon 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);
}
}
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);
Modifié. Si vous le faites dans Netbeans IDE designer , suivez les étapes ci-dessous:
- Sélectionnez le formulaire sur lequel le JTable est placé
- Dans le volet de navigation, développez JScrollPane et cliquez avec le bouton droit sur JTable et sélectionnez Personnaliser le code comme indiqué ci-dessous:
{public boolean isCellEditable(int row, int column){return false;}}
avant le dernier blacket de clôture); Votre configuration finale devrait ressembler à ceci:
Si vous utilisez DefaultTableModel, vous pouvez remplacer la méthode isCellEditable et l'implémenter lors de la construction de l'interface graphique:
table.setModel(new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
});
Utiliser Netbeans d'une autre manière est possible. si vous souhaitez continuer à utiliser le modèle de table par défaut comme le mentionne l'OP Il n'est pas nécessaire de créer un nouveau modèle de table si vous ne le souhaitez pas.
Sélectionnez le JTable "propriétés"
Sélectionnez le champ "TableModel" dans "propriétés", ce qui ouvrira un autre DialogBox.
A partir de là, il est possible de modifier le champ de case à cocher "éditable" pour chaque colonne.
Vous ne savez pas à partir de quelle version cela démarre, mais j'utilise Netbeans 7.2
Comme d'autres l'ont dit, vous devez créer votre propre variable DefaultTableModel
et la remplacer par isCellEditable
. Pour l'utiliser dans Netbeans Designer:
new JTable(new MyModel())
(en supposant que vous créez la classe MyModel extend AbstractTableModel)Essaye ça
JTable table = new JTable();
table.setEnabled(false);