J'ai une classe de table qui crée modifie un tableau d'éléments. Je veux afficher ces éléments dans un JTable en utilisant un modèle de table. Pour moi le modèle de table appartient à mon paquet d'interface graphique, mais la table a besoin d'un modèle de table pour générer des changements et le modèle de table a besoin de la classe de table pour l'afficher, donc je ne peux pas séparer les deux. Si vous avez besoin de faire cela, quelle serait la structure de classe que vous utilisez? ou ai-je un flux dans ma pensée et ils appartiennent dans le même paquet?Conception de modèle de table Java
Répondre
Le modèle de table n'a pas besoin de savoir quoi que ce soit sur la table dans laquelle il est placé. J'ai placé le modèle de table dans le package modèle et la table dans le package de vue. Le contrôleur est chargé de demander le modèle au modèle, de demander le package de vue pour la table et de définir ce modèle dans la table.
Pour moi le tablemodel fait partie du widget, c'est l'interface graphique. Je ne dépendrais pas du paquet javax.swing dans mes classes de logique métier.
Vous utiliserez donc un adaptateur ou un autre mécanisme pour charger votre modèle de tableau à partir de la couche de gestion, mais ce degré de séparation peut être utile. La décision dépend également de la taille du projet et peut être beaucoup plus complexe que cela. Par exemple. voir le cadre jgoodies binding et les docs pour les cas les plus abstraits.
Le modèle est le bit qui contient les données. Il devrait maintenir et tirer les auditeurs comme de tels modèles.
Désormais, vous pouvez avoir besoin d'une délégation dans le modèle pour transformer les données ou adapter le type. Vous avez donc vos données dans un objet modèle qui n'est pas forcément lié à javax.swing.table. Ensuite, implémentez un TableModel qui délègue à votre modèle sous-jacent. Créez un JTable avec ce TableModel, mais pas de référence au modèle sous-jacent.
Un TableModel
est un adaptateur . J'écris toujours le modèle de table pour étendre AbstractTableModel
et l'ai comme classe interne privée de ma classe de panneau d'interface graphique. Il vous suffit de remplir quelques méthodes: getRowCount
, getColumnCount
et getValueAt
Votre classe GUI devrait avoir accès à certains contrôleur où il peut remplir ces informations à partir. Lorsque votre contrôleur découvre les mises à jour des données, il doit en informer votre classe GUI qui peut ensuite appeler AbstractTableModel.fireTableDataChanged
ou d'autres méthodes appropriées.
Jamais n'utilisez la classe DefaultTableModel
car vous devez alors synchroniser les données du modèle de table avec celles du contrôleur. Comme je l'ai dit, le modèle de table est un adaptateur qui présente les données du contrôleur d'une manière que le JTable
peut comprendre
Je suggère fortement que toute personne effectuant un développement important de table ou de liste jetez un oeil à Glazed Lists - J'ai écrit personnalisé TableModel et CellRenderers pendant des années, se lier avec JGoodies, etc ... J'ai trébuché sur GL à propos d'un an, et mon développement n'a jamais été le même - l'approche Glazed Lists est tout simplement stupéfiante.
GL a deux caractéristiques qui en font mon cadre de choix pour les données sur la base de la liste de liaison et de traitement:
- Très, très facile à faire les choses normales que vous voulez faire
- permet de faire les choses vraiment, vraiment dur que vous pouvez vouloir faire
Jetez un coup d'oeil et voyez si vous n'êtes pas impressionné. Je vous recommande fortement de jouer avec les exemples d'applications, puis de regarder quelques-uns des écrans qui vous guideront dans le processus de codage.
- 1. Conception de modèle MVVM
- 2. Ressources de modèle de conception CFML?
- 3. Recherche de modèle de conception
- 4. Modèle de conception d'événement/classe (prototype)
- 5. modèle de conception de propriétés polymorphes
- 6. questions de conception de modèle django
- 7. Modèle de conception de visiteur dans OCaml
- 8. Syntaxe modèle de conception de surbrillance
- 9. Java génériques problème de conception
- 10. étiquettes Django et traductions - Modèle de conception
- 11. Modèle de conception pour les fonctions optionnelles?
- 12. Modèle de conception pour les observateurs multithread
- 13. Modèle de conception adapté à la tâche
- 14. Question sur la conception de table
- 15. Conception de table pour les dates cycliques
- 16. Quel est le modèle de conception implémenté par PEAR DB_DataObject?
- 17. Modèles de conception pour l'application Java EE
- 18. Implémentations Java du modèle de prototypes
- 19. Modèle de conception de stratégie C++, création d'un tableau d'interface
- 20. Vous cherchez un modèle de conception de création
- 21. Quel est le nom de ce modèle de conception?
- 22. Qui doit faire la conception de modèle de données
- 23. Connaissez-vous des exemples de modèle de conception PAC?
- 24. Quel modèle de conception dois-je utiliser pour une liste TODO en Java?
- 25. Modèle d'état de document Java?
- 26. état de l'objet dans le modèle de conception de la méthode du modèle
- 27. est le modèle de stratégie (modèle de conception) moins utile lorsque le changement est imprévisible?
- 28. Modèle de conception pour l'analyse d'un arbre de balisage dans un modèle d'objet
- 29. Modèle vide, table vide
- 30. Conception: Emailing System in Java
Ah, vous voulez dire que les méthodes qui doivent être mises en œuvre sont
n'est-ce pas? – dhillerHaha oui. Oops! J'aurais dû vérifier ça en premier! –