Comment utiliser personnalisée JTable cellule de l'éditeur et de rendu de cellule
J'ai créé une JTable avec une table personnalisée de rendu et de cellule personnalisé éditeur qui donne le résultat dans l'image
J'ai créé le panneau indiqué dans le premier tableau, les cellules à l'aide d'une catégorie distincte qui s'étendait Composite. et ajouter les valeurs de la table comme,
tbl.setCellEditor(new customCell());
tbl.getColumnModel().getColumn(0).setCellRenderer(new customCell());
DefaultTableModel dtm = (DefaultTableModel) tbl.getModel();
Vector v = new Vector();
v.add(new Panel());
v.add("Test");
dtm.addRow(v);
v.clear();
v.add(new Panel());
v.add("Test 2");
dtm.addRow(v);
Et c'est ma table de classe personnalisée pour créer cette table,
class customCell extends DefaultTableModel implements TableCellRenderer, TableCellEditor {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Panel p = new Panel();
table.setRowHeight(row, p.getHeight());
return p;
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
return new Panel();
}
public Object getCellEditorValue() {
return "";
}
public boolean isCellEditable(EventObject anEvent) {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
public boolean stopCellEditing() {
return true;
}
public void cancelCellEditing() {
throw new UnsupportedOperationException("Not supported yet.");
}
public void addCellEditorListener(CellEditorListener l) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void removeCellEditorListener(CellEditorListener l) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
Mon problème est la pensée, le panneau est illustré comme je m'y attendais je ne peut pas taper dans le champ de texte ou de changement de case à cocher ou cliquez sur le bouton. merci de me dire comment résoudre ce problème.
OriginalL'auteur Harsha | 2012-08-08
Vous devez vous connecter pour publier un commentaire.
avoir à ajouter de la bonne
LayoutManager
,Editable/non_Editable
propriétés déjà visibleJPanel
laisser profiter de
je vous remercie pour la grande pêche, btw, ce code est révisé par votre honnêteté plus de 3 fois, j'ai essayé de déplacer et à utiliser l'Action de JTable faite par Rob(je pense que rien de mieux, gratuit et plus simple), pas de changements et d'événements sont déclenchés assez similair,
Merci beaucoup mKorbel
pourquoi êtes-vous étendre AbstractCellEditor
Simionescu, car ....... ours polaire??? :-), Je suis de voir que, comme la plus simple, compacte pour l'exemple de code dans SSCCE forn, collé à un forum public
OriginalL'auteur mKorbel
Je suggère fortement de réutiliser les fonctionnalités disponibles dans la table par défaut les convertisseurs et les éditeurs, comme il y a beaucoup de choses de mal avec votre code
Component
à chaque fois. Au lieu de cela, la réutilisation d'un même composant et ne modifier queComponent
dans legetTableCellRendererComponent
méthodeComponent
UnsupportedOperationException
s, ou par tout les retours à videString
sDe back-up de mon point de suite, une petite citation de la Les éditeurs de la partie dans le
JTable
tutoriel:Comme l'a expliqué clairement là, vous devez mettre en œuvre l'événement de tir code:
qui vous clairement négligé. Donc, je conseille de commencer à partir de
AbstractCellEditor
au lieu de la mise en œuvre de l'interface à partir de zéroOriginalL'auteur Robin