|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Expert Confirmé Sénior
![]() ![]() |
Bonsoir,
Je viens de finir un article sur Swing : Création interface graphique avec Swing : les tableaux (JTable) Je tente d'expliquer les différents concepts liés à l'utilisation de tableaux en Swing. Dans cet article, nous verrons donc les concepts de base du composant JTable, la définition de modèle de tableaux, la modification dynamique du contenu du tableau, la façon de modifier l'affichage des différentes cellules du tableau, la modification directe du contenu du tableau et finalement le tri et le filtrage du tableau. En espérant qu'il vous soit utile Baptiste Wicht
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|
40
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : juillet 2006 Messages : 765 ![]() |
Pas mal de fonctionnalité, avec du bon code réutilisable. Beau travail ! J'en profite quand même pour réintroduire mon vieil article sur les JTables, plus court, et différent (moins de fonctionnalités, et un poil plus de TableColumn et Events). J'adore la programmation Swing, c'est très agréable à programmer. Dommage que ce soit obsolète pour x raisons étranges.
__________________
Robusta Web Library : Clients RESTful open source pour Java, Android & GWT. API Simple et Productive. Avec style. |
|
|
00
|
|
|
#3 | |
|
Membre confirmé
![]() Vincent Inscription : octobre 2005 Messages : 154 ![]() |
Citation:
Pour le second... bof. J'avoue que je m'y suis habitué, et il y a des aspects sympas, mais en somme, je trouve quand même plutôt lourd le Swing. Il faut souvent parcourir plusieurs objets avant d'obtenir une information triviale (ex récent pour moi: je voulais définir un renderer spécial sur une colonne donnée. Le faire pour une classe donnée n'était pas possible étant donné que plusieurs colonnes sont de type "Date". Et bien il faut éplucher la Javadoc pour trouver qu'il faut passer par le TableModel pour récupérer la bonne colonne ! J'ai eu des exemples pires, mais je ne me rappelle plus en détail). En outre, il manque une vision haut niveau du paradigme MVC. J'utilise un framework propriétaire pour palier cela, mais de base, Swing, ça manque quand même de beaucoup de choses. A sa décharge, il est vrai qu'il est plus ou moins abandonné par Sun au profit de JavaFX... le même tutoriel (sur les JTable) avec ce dernier serait intéressant ! |
|
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : août 2007 Messages : 5 ![]() |
Bonjour,
Pour mon projet, je galère un peu avec ces fameuses jTable ;o) Bon boulot ! |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : janvier 2006 Messages : 3 ![]() |
Merci pour l'article.
La lecture du code source de la démo Swing fourni avec le JDK est aussi intéressante. C'est aussi dispo en Web Start sur : https://swingset3.dev.java.net . |
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 654 ![]() |
Salut,
Très bon article sur les JTables ! Cela manquait ![]() J'ai deux petites remarques (mais c'est vraiment des bricoles --- j'aime bien chipoté ) :Tu peux éviter de supprimer le texte des cellule avec setText("") tout simplement en évitant de passer "value" à la méthode parente, par exemple : Code :
Dans ton SexeCellRenderer tu précharges une fois pour toute les images pour éviter de les recréer à chaque appel. C'est bien mais on pourrait faire la même chose dans le BoldCellRenderer pour éviter de multiplier les créations de Font dérivée : Code :
Enfin je finirais avec une petite astuce : il est possible d'alterner les couleurs de fond des cellules assez facilement. Par example pour alterner avec un jaune pale : Code :
UIManager.put("Table.alternateRowColor", new Color(255, 255, 204)); Toutefois, il faut penser que cela impactera toutes les JTables de l'application... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
||||
|
10
|
|
|
#7 | |||||||
|
Expert Confirmé Sénior
![]() ![]() |
Merci pour vos commentaires
Citation:
![]() Citation:
Citation:
Je vais mettre à jour dans les jours qui viennent
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|||||||
|
10
|
|
|
#8 | ||
|
Membre régulier
![]() ![]() Développeur informatique Inscription : janvier 2004 Messages : 150 ![]() |
Citation:
Citation:
![]() Sinon j'applaudis l'idée de ce tuto déjà pas mal complet. Vu le temps que j'ai dû passer plongé dans la javadoc et dans les tutos Sun pour apprendre à correctement m'en servir... ça pourra sûrement en aider plus d'un ! |
||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() |
Merci , c'est un bon travail
mais svp il manque un peu d'organisation de code , il faut indiquer où mettre chaque bout de code car ils sont séparés, et concernant le code de triage il n'a pas bien marché ![]() de même pour la modification de valeur de combobox de sport ; j'attends la modification de code |
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() ![]() |
Citation:
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|
|
00
|
|
|
#11 | |||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 275 ![]() |
Citation:
pour chipoter un peu... C'est une bonne idée mais il faut être conscient que cela a des effets de bord ; en effet ici tu crées une fonte à partir de la fonte par défaut associée au JLabel (puisque DefaultTableCellRenderer hérite de JLabel). Or DefaultTableCellRenderer est initialement configuré pour "hériter" de la fonte de la JTable, ce qui n'est plus le cas ici. Ainsi, si la fonte de la JTable est modifiée, le BoldCellRenderer gardera la fonte initialement calculée. De plus il peut être problématique de partager le BoldCellRenderer entre différentes tables (de fonte différente). |
|||
|
|
00
|
|
|
#12 | ||||
|
Futur Membre du Club
![]() Inscription : novembre 2008 Messages : 52 ![]() |
Hello merci beaucoup pour ton tuto
![]() juste pour écrire moins avec des classes anonymes pour ceux qui les aiment c'est pas vraiment utile mais je trouve ça plus claire... : Code :
Code :
|
||||
|
|
00
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() ![]() |
Effectivement, ça va aussi marcher très bien, même si personnellement, je trouve ça plus lourd comme syntaxe. Comme quoi, les goûts et les couleurs
Sinon, la version avec les classes internes plutôt plutôt qu'anonyme a un avantage si on veut aussi permettre d'utiliser ces actions via un menu ou un raccourci clavier, ce qui n'est pas faisable avec une classe anonyme à moins de dupliquer du code.
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|
10
|
|
|
#14 |
|
Membre expérimenté
![]() Inscription : avril 2006 Messages : 853 ![]() |
quand tu ajoutes un élément, ton élément est statique... ce n'est pas l'utilisateur qui l'entre....
comment tu ferais pour que ça soit l'utilisateur qui entre la ligne de donnée au complet? il y a ajout d'une ligne vide via un bouton... ou bien il y en a toujours une de vide... ensuite ajout des donnée de l'utilisateur ? ou ces changements seraient fait? |
|
|
00
|
|
|
#15 | |
|
Expert Confirmé Sénior
![]() ![]() |
Citation:
Sinon, une autre solution, comme tu l'as dit, un bouton pour rajouter une ligne vide et ensuite l'utilisateur fait les modifications directement dans le tableau, mais ce n'est pas à mon avis, le choix le plus ergonomique.
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|
|
00
|
|
|
#16 | |
|
Membre expérimenté
![]() Inscription : avril 2006 Messages : 853 ![]() |
Citation:
|
|
|
|
00
|
|
|
#17 |
|
Membre éprouvé
![]() Inscription : février 2009 Messages : 352 ![]() |
Merci pour ce tuto qui m'a bien aidé
![]() j'ai quand même une question .... J'ai vue dans la doc de TableModel que la méthode getColumnName doit retourner une String. Hors je voudrais mettre une checkbox pour permettre de tout sélectionner ou pas. Je sais pas quoi faire, j'ai peur qu'on puisse pas. Auriez-vous une idée? Merci mec |
|
|
00
|
|
|
#18 |
|
Expert Confirmé Sénior
![]() ![]() |
Oui, c'est possible. Tu peux spécifier un renderer pour les header.
Un exemple ici : http://www.codeguru.com/java/articles/664.shtml
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|
10
|
|
|
#19 |
|
Membre éprouvé
![]() Inscription : février 2009 Messages : 352 ![]() |
Super !! je vais regarder ca de plus près , merci
|
|
|
00
|
|
|
#20 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 705 ![]() |
Merci
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com