1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
package customcombobox;
import java.awt.Color;
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
/**
*
* @author dc
*/
public class CustomComboBox
{
public static void main(String[] args)
{
String[] items = { "Bananes", "Cerises", "Oranges", "Pommes" };
JFrame frame = new JFrame("JComboBox Custom Colors");
frame.setSize(213, 200);
frame.getContentPane().setLayout(null);
JButton Finish = new JButton("Fin");
Finish.addActionListener(e -> System.exit(0));
Finish.setBounds(43, 133, 100, 23);
JComboBox<String> comboBox = new JComboBox<>(items);
comboBox.setBounds(43, 23, 101, 20);
comboBox.setForeground(Color.red);
comboBox.setBackground(Color.green);
for(int i = 0 ; i < comboBox.getComponentCount(); ++i){
String s = comboBox.getComponent(i).getClass().toString() ;
System.out.println("i = 0 " + s) ;
}
comboBox.setRenderer(new DefaultListCellRenderer()
{
private static final long serialVersionUID = 1L;
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected,
boolean cellHasFocus)
{
Component renderer = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if(index >=0){
renderer.setForeground(Color.BLACK);
renderer.setBackground(Color.pink);
} else {
System.out.println("index = " + index + value) ;
renderer.setForeground(Color.red);
renderer.setBackground(Color.green);
}
return renderer;
}
});
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBounds(10, 10, 193, 179);
panel.setBackground(new Color(102, 205, 170));
panel.add(comboBox);
panel.add(Finish);
frame.getContentPane().add(panel);
/* if je change par "false" la partie texte n'est plus coloriée mais le reste l'est toujours. */
// comboBox.setEditable(true);
comboBox.setEditable(false);
/* */
frame.setUndecorated(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
} |
Partager