L'aide personnalisée TableModel faire isCellEditable vrai pour une ligne particulière sur le bouton cliquez sur
J'ai un tableau comme ci-dessus. Initialement, toutes les cellules à l'exception du bouton de la colonne ne sont pas modifiables. J'ai créé la table à l'aide personnalisée TableModel
. Mon isCellEditable
dans la coutume TableModel
ressemble à ceci:
public boolean isCellEditable(int rowIndex, int columnIndex) {
//System.out.println("isCellEditable: " + rowIndex + " " + columnIndex);
if(getColumnClass(columnIndex) == JButton.class)
return true;
else
return false;
}
Mais quand je clique sur le bouton Modifier de chaque ligne d'un JDialog
pop up avec cette ligne (par la construction d'une JTable
dans cette boîte de dialogue à une seule rangée.) Je peux mettre à jour les valeurs des cellules dans cette JDialog de la table. et puis les mettre à jour dans les cellules de cette ligne.
Je suis avec succès en mesure de mettre à jour la table principale de la ligne après la mise à jour ici, que si mon isCellEditable
return true. Mais cela ne devrait pas arriver. Seulement quand je clique alors je devrais être en mesure de changer isCellEditable
de la ligne comme Modifiable et la mise à jour et le rendre non modifiable.
J'ai vu la suite post mais a été incapable de la mettre en œuvre.
Non, j'ai lu et j'ai compris. J'ai mis en œuvre getColumnClass et isCellEditable méthodes dans mon modèle personnalisé. Mais mon doute, c'est que les lignes doivent être modifiable uniquement après avoir cliqué sur le bouton de la ligne correspondante, puis faire de mise à jour et de faire de cette ligne de nouveau non modifiable. Merci de m'expliquer si je ne suis pas arriver.
my question is ---->
est-il vraiment la raison (dans votre cas, et les connaissances sur les Java Essential Classes
et Swing
) à utiliser AbstractTableModel
, s'il vous plaît si il n'y pas vraiment de raison importante, puis de commencer avec des combinaisons JTable et DefaultTableModel, parce que tous les déclarants sont mis en œuvre tout à fait correctement, sans se soucier de remplacer lejuste pour souligner une balle dans @mKorbel réponse: Ne.Pas.Magasin.Des composants.Dans.Votre.De modèle. Au lieu de cela, mettre en œuvre un moteur de rendu personnalisé/éditeur que les peintures de la cellule à l'aide d'un bouton. Quant à votre question: d'après votre description, Idon pas tout à fait comprendre ce que vous êtes vraiment après .. a) en cliquant sur le bouton afficher une boîte de dialogue qui contient une autre table avec une seule ligne et permettre l'édition dans cette boîte de dialogue tableau b) cliquez sur le bouton et autoriser temporairement dans l'édition de la table qui contient les boutons?
d'accord, et que leur montrant seulement ceux de la colonne qui doivent être mis à jour est en fait dans une boîte de dialogue?
OriginalL'auteur Amarnath | 2012-09-13
Vous devez vous connecter pour publier un commentaire.
Étoffer mon commentaire à la question:
avec un peu de code:
OriginalL'auteur kleopatra
XxxTableModel
magasinsString.class
pourJButton
commeRenderer
/Editor
pourJTable
et de votre code (est) trop
MODIFIER
DefaultTableModel
AbstractTableModel
les deux renvoie la même interface graphique, avec la même ...
AbstractTableModel
. 🙂Ouais l'ai eu .. mais que faire sa partie de mon travail .. de toute façon je suis en profitant de l'apprentissage. Peu importe si c'est l'ancienne ou la nouvelle .. 🙂
vous êtes vraiment fou, je suis à la promesse que j'ai quitter pour répondre à vos futures question 🙂
écrit
for trying out AbstractTableModel
.... la foudre dans un ciel serein 🙂c'est failtrue en Java, toutes les cellules dans
JTable
s de vue renvoie true de remplacer dans leisCellEditable()
, comme de côtéisCellEditable()
a deux coordonnéesrow
etcolumn
, puisswitch (colNum) {
est failtrue pour toutes les cellules dans la colonne de béton .... 🙂OriginalL'auteur mKorbel