JComboBox dans un JTable cellule
J'ai une JTable créé à l'aide d'un modèle, qui est basée sur une matrice d'objets.
Pour chaque ligne, je veux mettre dans une colonne spécifique (la 5ème), certaines informations à l'aide d'un JComboBox.
J'ai essayé ce qui suit:
for(int i=0; i < n ; i++) {
.....
data[i][5] = new JComboBox(aux); //aux is a Vector of elements I wanna insert
}
table.setModel(new MyTableModel()); //MyTableModel() already takes into consideration the data[][] object
Le problème est que les données[i][5] = new JComboBox(aux); ne pas créer un objet JComboBox dans cette cellule spécifique de la JTable, mais colle un code dans la ligne.
Que puis-je faire pour résoudre ce problème?
Merci.
OriginalL'auteur anna-k | 2010-07-15
Vous devez vous connecter pour publier un commentaire.
Est une façon de remplacer la getCellEditor() la méthode de retour d'un éditeur approprié. Voici un exemple pour vous aider à démarrer:
Edit: le code mis à jour pour utiliser trashgod de la suggestion.
List<DefaultCellEditor> editors = new ArrayList<DefaultCellEditor>(3)
.Oui, j'ai écrit le code de l'exemple avant de génériques existé. Je suppose que je devrais le mettre à jour pour être plus courant 🙂
À la réflexion,
List<TableCellEditor> editors = new ArrayList<TableCellEditor>(3)
peut-être mieux. C'est plus général, évite la fonte dansgetCellEditor()
et permet la mise en œuvre doit être changé. Désolé pour les fesses diriger; encore en apprentissage.OriginalL'auteur camickr
Héhé, c'est de ne pas être utilisé comme vous avez proposé.
Vous devez créer un personnalisé TableCellRenderer ou TableCellEditor.
Ensuite, vous pouvez spécifier pour la classe à laquelle il va être utilisé:
Une description détaillée peut être trouvée ici: http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/components/table.html#combobox
Pour un rendu dans une ligne spécifique & la colonne, vous pouvez simplement utiliser:
OriginalL'auteur Javaguru
Essayer quelque chose comme cela:
OriginalL'auteur Adrian
Pour la
JComboBox
être disaplyed, vous devez utiliser unTableCellRenderer
. Jetez un oeil à à l'Aide d'une Zone de liste déroulante comme un Éditeur.OriginalL'auteur Riduidel