2010-10-18 4 views

Répondre

2

Jetez un oeil à cet exemple qui semble faire ce que vous voulez.

http://www.java2s.com/Code/Java/Swing-JFC/CustomComboBoxwithImage.htm

Ce que vous cherchez est un moteur de rendu personnalisé pour le JComboBox. Un rendu est simplement un composant JComponent, donc si vous pouvez créer un composant (JPanel avec les éléments nécessaires contenus), alors vous pouvez créer presque n'importe quel résultat auquel vous pouvez penser). Vous pouvez même remplacer la méthode de peinture si l'utilisation de JComponents standard ne vous suffit pas.

+1

Le moteur de rendu par défaut pour un JComboBox prend en charge les icônes. – camickr

9

il suffit d'ajouter une icône au modèle au lieu d'une chaîne:

import java.awt.*; 
import javax.swing.*; 

public class ComboBoxIcon extends JFrame 
{ 
    JComboBox comboBox; 

    public ComboBoxIcon() 
    { 
     Object[] items = 
     { 
      new ImageIcon("about16.gif"), 
      new ImageIcon("add16.gif"), 
      new ImageIcon("copy16.gif") 
     }; 
     comboBox = new JComboBox(items); 
     getContentPane().add(comboBox, BorderLayout.NORTH); 
    } 

    public static void main(String[] args) 
    { 
     JFrame frame = new ComboBoxIcon(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 
+0

J'ai un tableau de BufferedImage(), puis-je l'utiliser à la place des éléments [] ?? – user2277550

+0

@ user2277550 Créez ImageIcons en utilisant l'image buffered. La zone de liste déroulante a un rendu par défaut pour les icônes, pas pour les images. – camickr