2013-08-27 2 views
0

Ceci est ma première question StackOverflow, donc si je fais/demande quelque chose d'incroyablement stupide, s'il vous plaît soyez indulgent!Signification de l'argument getTableCellRendererComponent

Je suis un noob quand il s'agit de Java, spécifiquement swing, et j'ai du mal à comprendre la fonction getTableCellRendererComponent de l'interface TableCellRenderer (et similaire avec la fonction getTableCellEditorComponent de l'interface TableCellEditor). Plus précisément, je ne comprends pas le point du 2ème argument (type d'objet). Est-ce que la valeur pour cela vient juste du JTable donné à la rangée et à la colonne données? Si oui, pourquoi s'embêter avec le 2ème argument du tout? J'ai fait pas mal de recherches sur google, mais personne ne semble répondre à cela (ou peut-être que mon cerveau a des neurones dysfonctionnels, ce qui, compte tenu de l'histoire passée, n'est pas une explication improbable ...)

I apprécierait l'aide!

Merci

+0

Allez ici http://docs.oracle.com/javase/6/docs/api/javax/swing/table/TableCellRenderer.html Cela peut aider – Yubaraj

+0

J'ai déjà regardé cela, mais n'a toujours pas de sens. Pourquoi ne pas simplement appeler table.getValueAt (ligne, colonne) au lieu d'utiliser "value"? – queenbee

Répondre

2

JTable rendu est un exemple de la flyweight pattern dans lequel un seul composant est déplacé de façon répétée pour rendre la valeur d'une cellule de tableau. Le getTableCellRendererComponent() est appelé par la table chaque fois que la table détermine le besoin de rendre une cellule. Comme on peut l'appeler fréquemment, il faut faire attention à l'efficacité. L'avantage est que le processus de rendu peut être omis pour les cellules non visibles. Voir aussi ce example.

Addendum: Pourquoi ne pas tout simplement appelertable.getValueAt(row, column)au lieu d'utiliservalue?

Quand il peint une cellule, délégué interface utilisateur de la table, généralement une sous-classe de BasicTableUI, doit invoquer prepareRenderer() sans connaissance du TableModel. Le contrat de la méthode prepareRenderer() de la table, a la connaissance du TableModel, spécifie qu'il "prépare le moteur de rendu en interrogeant le modèle de données pour la valeur." Voir A Swing Architecture Overview pour plus de détails.