Vous devez être membre et vous identifier pour publier un article.
Les visiteurs peuvent toutefois commenter chaque article par une réponse.
[Swing] Tooltip sur les éléments d’un JComboBox
Article publié le 20/10/2008 13:56:15Pour placer un ToolTip sur chaque élément d’une boîte de sélection (JComboBox), nous allons passer par un Renderer.
Quand nous désirons sélectionner un élément d’un JComboBox, ce dernier utilise une JList pour afficher les choix.
A l’aide d’un renderer, nous pouvons spécifier comment afficher chaque cellule de la liste, et par la même occasion afficher une bulle d’aide (ToolTip).
Le renderer
Code Java (46 lignes)
import java.awt.Component; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; import javax.swing.ToolTipManager; import eu.mil.meat.domain.generic.Catalog; import eu.mil.meat.domain.generic.LogicalDeletionOnly; public CatalogComboBoxRenderer() { setOpaque(true); setHorizontalAlignment(LEFT); setVerticalAlignment(CENTER); } boolean cellHasFocus) { if (value == null) { setText(""); } else { String text = "‹html›‹body›" + value.toString() + "‹/body›‹/html›"; if (value instanceof Catalog) { Catalog item = (Catalog) value; String toolTip = "‹html›‹body› ‹b›" + item.getCode() + "‹/b› ‹i›" + description + "‹/i› ‹/body›‹/html›"; setToolTipText(toolTip); // forces tooltip staying on top list.setOpaque(true); } if (value instanceof LogicalDeletionOnly) { LogicalDeletionOnly item = (LogicalDeletionOnly)value; text = item.isInUse() ? text : "‹html›‹strike›" + item + "‹/strike›‹/html›"; } setText(text); } setBackground( isSelected ? list.getSelectionBackground() : list.getBackground()); setForeground(isSelected ? list.getSelectionForeground() : list.getForeground()); return this; } }
Application
Nous pouvons décorer le JComboBox de la manière suivante :
Code Java (1 ligne)
myComboBox.setRenderer(new CatalogComboBoxRenderer());
Le ToolTip du JComboBox s’affiche en dessous de la JListe
Pour pallier à ce problème, nous utilisons la ligne suivante :
Code Java (1 ligne)
Un article de Steph
Source : indéterminée
English translation
You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.
Thank you in advance.
Document created the 13/09/2004, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/ast-rf-444.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.