J'ai créé une fonction qui charge des données dans un JTable code>. Tout fonctionne bien, sauf que toutes les cellules de cette table sont modifiables. BTW, j'ai utilisé
DefaultTableModel code> pour le modèle de table. Je fais cela dans NetBeans IDE. 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);
}
}
6 Réponses :
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: 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.
Merci mais je ne pense pas que cela fonctionnera dans mon code. Le modèle de table par défaut que j'utilise a été créé par Netbeans. Malheureusement, je ne peux pas éditer le code. Y a-t-il un autre moyen pour cela?
Vous pouvez le faire dans NetBeans @ alain.janinm code> a déjà posté comment faire cela dans NetBean Designer.
@ user1349213 code> Voir la version modifiée de ma réponse sur la façon de faire cela dans Netbeans.
Si vous utilisez DefaultTableModel, vous pouvez remplacer la méthode iScelleditable et l'implémenter lors de la construction de GUI:
table.setModel(new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { return false; } });
Comme autre dit que vous devez vous créer posséder posséder votre propre par défautTableModel code> et la remplacement
iScelleditable code>. Afin de l'utiliser dans NetBeans Designer: P>
Nouvelle JTABLE (Nouveau MyModel ()) Code> (En supposant que vous créez une classe MyModel étend abstracttablodel) li>
ul>
Utiliser NetBeans Une autre manière est possible. Si vous souhaitez continuer à utiliser le modèle de tableau par défaut comme l'op mentionne Il n'est pas nécessaire de créer un nouveau modèle de table si vous ne voulez pas. P>
Sélectionnez les "propriétés" JTAble p> li>
Sélectionnez le champ "TableModel" dans "Propriétés" qui ouvrira une autre boîte de dialogue. P> Li>
de là, il est possible de modifier le champ de la case "modifiable" pour chaque colonne. p> li> ol>
Je ne sais pas à partir de quelle version cela commence mais j'utilise NetBeans 7.2 P>
Soin d'expliquer votre bowvote. Cette solution fonctionne.
Essayez ceci
Ajouter quelques détails
JTextField f = new JTextField(); f.setEditable(false); for (int i = 0; i < table.getColumnModel().getColumnCount(); i++) { table.getColumnModel().getColumn(i).setCellEditor(new DefaultCellEditor(f)); }
Bien que cela puisse fonctionner, ce n'est pas le moyen de y parvenir. La réponse déjà acceptée donne la méthode correcte.
C'est une autre façon de désactiver Jtalable et cela fonctionne parfaitement.
Ceci est le code mettant à jour le modèle de données. Les cellules modifiables ont à voir avec la jtalie à la place.
Je suggère fortement d'éviter les blocs de capture vides, certainement si vous attrapez une exception
possible code> dans la capture
Dupliqué possible de Comment faire une JTable non modifiable