2010-10-18 13 views

risposta

2

Date un'occhiata a questo esempio che sembra fare quello che vuoi.

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

Quello che state cercando è un renderer personalizzato per il JComboBox. Un renderer è semplicemente un JComponent, quindi se puoi creare un componente (JPanel con gli elementi necessari contenuti), puoi creare quasi tutti i risultati a cui puoi pensare). Puoi anche ignorare il metodo paint se l'uso di JComponents standard non è sufficiente per te.

+1

Il renderer predefinito per un JComboBox supporta le icone. – camickr

9

Basta aggiungere un'icona al modello invece di una stringa:

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

Ho una matrice di BufferedImage(), posso usare quello invece degli elementi [] ?? – user2277550

+0

@ user2277550 crea ImageIcons utilizzando BufferedImage. La casella combinata ha un renderizzatore predefinito per Icone, non per immagini. – camickr

Problemi correlati