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

Astuces de l’Infobrol (Java)Article publié le 20/10/2008 13:56:15


Pour 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



  1. import java.awt.Component;
  2.  
  3. import javax.swing.JLabel;
  4. import javax.swing.JList;
  5. import javax.swing.ListCellRenderer;
  6. import javax.swing.ToolTipManager;
  7.  
  8. import eu.mil.meat.domain.generic.Catalog;
  9. import eu.mil.meat.domain.generic.LogicalDeletionOnly;
  10.  
  11. public class CatalogComboBoxRenderer extends JLabel implements ListCellRenderer {
  12.  
  13. public CatalogComboBoxRenderer() {
  14. setOpaque(true);
  15. setHorizontalAlignment(LEFT);
  16. setVerticalAlignment(CENTER);
  17. }
  18.  
  19. public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
  20. boolean cellHasFocus) {
  21. if (value == null) {
  22. setText("");
  23. } else {
  24. String text = "‹html›‹body›" + value.toString() + "‹/body›‹/html›";
  25. if (value instanceof Catalog) {
  26. Catalog item = (Catalog) value;
  27. String description = (item.getDescription() != null) ? item.getDescription() : "[No description]";
  28. String toolTip = "‹html›‹body›  ‹b›" + item.getCode() + "‹/b› ‹i›" + description
  29. + "‹/i›  ‹/body›‹/html›";
  30. setToolTipText(toolTip);
  31. // forces tooltip staying on top
  32. ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);
  33. list.setOpaque(true);
  34. }
  35. if (value instanceof LogicalDeletionOnly) {
  36. LogicalDeletionOnly item = (LogicalDeletionOnly)value;
  37. text = item.isInUse() ? text : "‹html›‹strike›" + item + "‹/strike›‹/html›";
  38. }
  39. setText(text);
  40. }
  41. setBackground( isSelected ? list.getSelectionBackground() : list.getBackground());
  42. setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
  43. return this;
  44. }
  45.  
  46. }


Application



Nous pouvons décorer le JComboBox de la manière suivante :
  1. 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 :
  1. ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);


Avatar :: Steph Un article de Steph

Source : indéterminée


Sélection, tri et recherche d'articles
FILTRER :
TRIER :1er critère : 2e critère :
CHERCHER : Dans les titres Dans le contenu


[Afficher les liens en fonction des critères du formulaire ci-dessus]

Nederlandse vertaling

U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.

Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.

Bij voorbaat dank.

Document heeft de 13/09/2004 gemaakt, de laatste keer de 26/10/2018 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/ast-rf-444.html

De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.