2009-08-04 7 views

Répondre

2
table.getColumn(0).setCellEditor(
    new DefaultCellEditor(new JComboBox(new Object[]{"A", "B", "C"}))); 
0

Vous pouvez utiliser JComboBox en utilisant l'éditeur de cellule pour toutes les colonnes en utilisant le code ci-dessous, sauf une colonne qui JXTreeTable utilise pour afficher des données hiérarchiques.
Ex:

TableColumnExt column = this.tree.getColumnExt(1); 
    column.setCellEditor(new DefaultCellEditor(new JComboBox()); 

dire que vous ne pouvez pas utiliser JComboBox pour une colonne qui JXTreeTable utilise pour afficher des données hiérarchiques.

Dans JXTreeTable doc java ils ont mentionner que,

JXTreeTable est une table spécialisée composée de une seule colonne dans laquelle pour afficher les données hiérarchiques, et un certain nombre d'autres colonnes où pour afficher des données régulières . JXTreeTable crée TreeTableCellEditor en interne qui est utilisé pour afficher les données hiérarchiques.

TreeTableModel fournit la méthode getHierarchicalColumn() dans laquelle vous pouvez spécifier Colum utilise pour afficher des données hiérarchiques

Maintenant, si vous voulez fournir JComboBox à la première colonne (colonne de position 0e est par défaut colonne hiérarchique), vous devez fournir différents index de colonne en utilisant TreeTableModel sinon vous devez déplacer votre colonne (recommandé de mon côté).

Code pour fournir la colonne différente pour les données hiérarchiques

this.tree = new JXTreeTable(new DefaultTreeTableModel() { 
    public int getHierarchicalColumn() { 
     return 2; 
    } 
}); 

Preview enter image description here

NOTE: J'ai fourni cette solution telle que vous pouvez réaliser votre solution avec le code de personnalisation minimum. Il peut y avoir un autre moyen mais personnellement, je trouve cette solution très facile à mettre en œuvre