Accueil > Forum > > > > JTable et ComboBox, que du bonheur...
JTable et ComboBox, que du bonheur...
mercredi 24 novembre 2004 à 12:37:34 |
JTable et ComboBox, que du bonheur...

Pimousse77
|
Bonjour à tous, Comme l'indique le titre du post, mon problème vient de l'intégration d'une ComboBox dans une JTable. En fait, le problème vient du fait que mon cahier des charges nécessite que je défasse la plupart des comportements par défaut mis en place par Sun sur le JTable, et celui qui me pose problème c'est le comportement d'affichage et d'édition de la ComboBox. J'ai bien réussi à définir une ComboBox par colonne, pas de problème là dessus. Cependant, si vous regardez bien le comportement d'une JTable, vous verrez que lorsque l'on fait apparaître un Editor, si l'on ne saisit rien et que l'on clique ailleurs dans la fenêtre, l'Editor perd le focus, mais ne rend pas la main au Renderer, ce qui laisse une case d'édition sans focus toute moche au milieu du tableau. On me demande de virer celà. J'ai réussi à le faire avec les champs normaux (JTextField), en faisant en sorte d'envoyer un fireEditingStopped() sur évènement de perte de focus, et ça marche nickel. Mais avec les JComboBox ça ne marche pas du tout, et j'obtiens un comportement merdique... :-/ Et je n'arrive pas à comprendre d'où ca vient, donc forcemment je n'arrive pas à corriger... Est ce que quelqu'un a déjà été confronté au problème ou est capable de m'aider là dessus ? Y'a t'il quelqu'un qui aime le challenge ? ;) Merci d'avance,
|
|
mercredi 24 novembre 2004 à 20:19:12 |
Re : JTable et ComboBox, que du bonheur...

GodConan
|
GodConan non mais moi je change aussi le renderer ... essaye ca pour voir... gl ++
|
|
jeudi 25 novembre 2004 à 10:16:40 |
Re : JTable et ComboBox, que du bonheur...

Pimousse77
|
Réponse acceptée !
Non non, rien à voir (j'ai aussi fait mon CellRenderer). Le problème ne vient pas du Renderer, mais du fait que l'editor ne passe pas la main au renderer.
Mais c'est bon, j'ai fini par trouver tout seul en m'acharnant. J'ai bricolé un peu l'éditeur de la combobox (oui oui) et de manière totalement inattendue ça a fini par marcher :)
Si ça interesse quelqu'un, je suis toujours à l'écoute.
P.S: je met réponse acceptée pour que les gens qui se balladent dans la liste des sujets sachent qu'il ya eu une solution à celui là...
|
|
jeudi 25 novembre 2004 à 13:37:04 |
Re : JTable et ComboBox, que du bonheur...

JBAware
|
Salut Bah je suis intéressé de voir ca... tu peux me faire parvenir ton code? JB@WAre
|
|
jeudi 25 novembre 2004 à 13:45:48 |
Re : JTable et ComboBox, que du bonheur...

Pimousse77
|
Voilà le morceau qui t'interesse : Peux tu me dire ce que tu veux en faire et si ça t'a servi s'il te plaît ?
class TDDefaultCellEditor extends DefaultCellEditor { /** Un lien vers le tableau contenant cet "Editor" */ private TDJTable tableau = null;
/** * Crée un TableCellEditor sous forme de JComboBox. * * @param combobox la JComboBox à utiliser. * @param tableauPasse l'instance du tableau ou insérer l'editor. */ protected TDDefaultCellEditor(JComboBox combobox, TDJTable tableauPasse) { super(combobox); tableau = tableauPasse; combobox.setEditor(new MyMetalComboBoxEditor(tableau, this)); } /** * Crée un TableCellEditor sous forme de JTextField. * * @param combobox le JTextField à utiliser. * @param tableauPasse l'instance du tableau ou insérer l'editor. */ protected TDDefaultCellEditor(JTextField textfield, TDJTable tableauPasse) { super(textfield); tableau = tableauPasse;
editorComponent.addFocusListener(new FocusAdapter() { public void focusLost(FocusEvent fe) { if(tableau.hasColumnChanged()) fireEditingStopped(); tableau.setColumnChanged(true); } }); editorComponent.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK)); } }
/** Un éditeur personnalisé pour les comboBox du TDJTable */ class MyMetalComboBoxEditor extends MetalComboBoxEditor { /** Un lien vers le tableau contenant cet "Editor" */ private TDJTable tableau = null; /** L'instance de l'editor contenant la JComboBox dont cet objet est l'éditeur */ private TableCellEditor cellEditor = null; /** Texte contenu dans la JComboBox */ private String texte = null; public MyMetalComboBoxEditor(TDJTable tableauPasse, TableCellEditor editorPasse) { super(); tableau = tableauPasse; cellEditor = editorPasse; editor.addFocusListener(new FocusListener() { public void focusGained(FocusEvent fe) { texte = editor.getText(); tableau.setColumnChanged(true); } public void focusLost(FocusEvent fe) { if(editor.getText().equals(texte) && tableau.hasColumnChanged()) cellEditor.stopCellEditing(); tableau.setColumnChanged(true); } }); } }
|
|
jeudi 25 novembre 2004 à 14:59:42 |
Re : JTable et ComboBox, que du bonheur...

JBAware
|
Oui bien sur, Je développe une appli à titre perso avec plusieurs Jtable. j'allais faire un filtre avec une fenêtre différente qui contiendrai plusieurs combos. Mais le fait de les insérés directement dans la Jtable sera je pense plus facile d'utilisation et en fait l'idée m'est venue en lisant ton post. En tout cas merci JB@WAre
|
|
jeudi 25 novembre 2004 à 15:31:31 |
Re : JTable et ComboBox, que du bonheur...

Pimousse77
|
Ok mais le code que je te passe là est "spécial".
Si tu as bien tout lu, le but de ce code est de supprimer le comportement par défaut de Sun qui laisse parfois les editeurs de cellule activés quand ils perdent le focus.
Si tu veux simplement ajouter des JComboBox dans ta JTable il te suffit de créer des
new DefaultCellEditor(JcomboBox maCombo);
|
|
jeudi 25 novembre 2004 à 15:59:20 |
Re : JTable et ComboBox, que du bonheur...

JBAware
|
En effet j'ai bien tout lu et j'avais noté que le code supprimait le comportement Sun Par contre je n'avais pas pensé au DefaultCellEditor que j'essaierai dès que possible. Je garde quand même ton code sous le coude Merci encore JB@WAre
|
|
jeudi 17 février 2005 à 14:13:10 |
Re : JTable et ComboBox, que du bonheur...

bastet1978
|
Dites y a personne qui peux me dire comment recuperer les infos d'une
JTable composee de divers JComboBox en appuyant sur un bouton externe
au JTable ?
J'arrive qu'a recuperer un 'null' avec .getValueAt(r, c) . J'ais pas
encore teste tes classes, c'est peut etre le renderer qui deconne chez
moi (j'ai aussi des cellules vides a la place des JCB avant de cliquer
dessus et de selectionner une valeur) et qui fait qu'il n'y a aucune
valeur dans la cellule meme apres selection d'une valeur du JCB.
Voila merci d'avance.
|
|
vendredi 18 janvier 2008 à 10:29:47 |
Re : JTable et ComboBox, que du bonheur...

jrdasm
|
En cherchant dans le code source de JTable, pour répondre au post original de Pimousse77, j'ai trouvé qu'il suffisait uniquement d'écrire cette ligne : nom_de_la_JTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
J'ai trouvé cette info dans le code source de JTable, dans la sous-classe CellEditorRemover.
|
|
Cette discussion est classée dans : problème, combobox, vient, jtable, comportement
Répondre à ce message
Sujets en rapport avec ce message
jtree [ par demonc ]
Bonjour,J'utilise une JTree comme un explorateur grace à un TreeModel. Mon problème est que j'aimerai par l'intermédiaire d'une ComboBox changer de pa
JTree [ par demonc ]
Bonjour,J'utilise une JTree comme un explorateur grace à un TreeModel. Mon problème est que j'aimerai par l'intermédiaire d'une ComboBox changer de pa
Menu déroulant dans une JTable [ par zeke62 ]
Bonjour,En fait, j'ai une gros problème, ce que je voudrais faire, c'est inserer une menu deroulant dans une cellule d'une JTable, mais un menu déroul
JTABLE ET ENCORE JTABLE [ par darkstorm ]
Bonsoir,C'est dingue quand même, ce composant est génial mais des fois il me broute totalement, je comprends pourquoi on dit UNE JTable... (dsl pour l
Récupération de valeur dans une JTable... [ par Marneus ]
Voilà, avec la méthode getValueAt(int, int) je réussis a obtenir ce que contient la cellule définit par les int, le problème est qu'il em retourne un
problème de repaint JTable [ par lynouille ]
Bonjour à tous,excusez moi de vous déranger mais j'ai un problème avec le rafraichissement de ma JTable qui prend en argument (Vector data , Vector Co
problème de focus [ par jc_romeo ]
BonjourJe suis en train de faire une interface graphique en swingà l'interieur il y a des JTextField, des JPane des JTable des JScrollBar......J'aimer
JCombobox dans un JTable : getSelectedIndex, getSelectedItem... [ par largo_winzclav ]
Bonjour et merci d'avance à tous ceux qui prendront le temps de m'aider,Dans une de mes applets, je fais apparaitre des cellules d'un JTable sous form
Combobox dans une jtABLE [ par perechev ]
salut les gens, Est-ce quelqu'un saurait si on peut faire une table avec des combobox dedans? mais je voudrais choisir les cellules et pas que ce soit
[JTable] Selectionner une cellule ! [ par Pimousse77 ]
Bonjour à tous !Voilà j'ai un problème qui peut paraître très bête et sur lequel je me prend pourtant bien la tête !J'ai besoin pour mon application d
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|