2010-09-19 7 views
1

Dans mon application Swing, j'ai une classe POJO appelée Command. La commande a quelques sous-classes. La plupart des sous-classes de commande se composent de 2 ou 3 chaînes. Mais les données de l'une des sous-classes Command ont un format de données assez différent.comment imbriquer des composants Swing compliqués

J'ai également une classe appelée CommandEditor, qui crée l'interface graphique pour afficher et modifier les différentes sous-classes de commande. CommandEditor crée un JPanel qui contient une boîte horizontale. Pour les sous-classes Command contenant 2 ou 3 Strings, la Box contient 2 ou 3 JTextField correspondants. Et pour la sous-classe impaire, la boîte contient les widgets appropriés pour afficher et modifier les données de cette sous-classe.

Je suis capable de mettre en place un formulaire qui contient un tas de CommandEditors, et tout fonctionne bien.

Mais maintenant j'ai besoin de gérer une ArrayList de Commandes. Toutes les commandes de ArrayList sont garanties être de la même sous-classe, ce qui signifie que les CommandEditors correspondants pour chacune des Commandes sembleront fondamentalement les mêmes (ayant une forme similaire)

Ce que le client veut, c'est quelque chose qui ressemble comme une table de CommandEditors.

Quelle est la meilleure façon de faire cela? Puis-je passer un vecteur d'objets CommandEditor dans un JList (de sorte que le JList place les CommandEditors dans des rangées, et que les CommandEditors donnent l'illusion d'avoir des colonnes)? Ou y a-t-il un meilleur moyen?

Répondre

1

Une approche serait d'utiliser un JTable et de mettre en œuvre l'interface TableCellEditor, comme suggéré dans ce example. Vous pouvez créer un PopupDialog différent pour chaque type de CommandEditor. Voir How to Use Tables pour des exemples supplémentaires.

1

Il semble que vous n'ayez besoin que d'une seule colonne de CommandEditors, donc JList aurait été plus facile à utiliser s'il avait supporté l'éditeur de cellules comme JTable.

Si vous avez le luxe de vous aventurer au-delà du swing, Apache Pivot's list prend en charge l'éditeur de cellules. Je ne l'ai pas personnellement utilisé mais j'ai vu de bonnes critiques.

Questions connexes