Example 1: customize jcomboboc
package net.codejava.swing.combobox;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.plaf.basic.BasicComboBoxEditor;
public class MyComboBoxEditor extends BasicComboBoxEditor {
private JLabel label = new JLabel();
private JPanel panel = new JPanel();
private Object selectedItem;
public MyComboBoxEditor() {
label.setOpaque(false);
label.setFont(new Font("Arial", Font.BOLD, 14));
label.setForeground(Color.BLACK);
panel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 2));
panel.add(label);
panel.setBackground(Color.GREEN);
}
public Component getEditorComponent() {
return this.panel;
}
public Object getItem() {
return "[" + this.selectedItem.toString() + "]";
}
public void setItem(Object item) {
this.selectedItem = item;
label.setText(item.toString());
}
}
Example 2: customize jcomboboc
package net.codejava.swing.combobox;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
public class MyComboBoxRenderer extends JLabel implements ListCellRenderer {
public MyComboBoxRenderer() {
setOpaque(true);
setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 14));
setBackground(Color.BLUE);
setForeground(Color.YELLOW);
}
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setText(value.toString());
return this;
}
}
Example 3: customize jcomboboc
package net.codejava.swing.combobox;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class CustomComboBoxTester extends JFrame {
public CustomComboBoxTester() {
super("Demo program for custom combobox");
setLayout(new FlowLayout());
CountryComboBox customCombobox = new CountryComboBox();
customCombobox.setPreferredSize(new Dimension(120, 30));
customCombobox.setEditable(true);
customCombobox.addItems(countryList);
add(customCombobox);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 100);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new CustomComboBoxTester().setVisible(true);
}
});
}
private String[][] countryList = {{"USA", "us.png"},
{"India", "in.png"},
{"Vietnam", "vn.png"},
{"Germany", "de.png"},
{"Canada", "ca.png"},
{"Japan", "jp.png"},
{"Great Britain", "gb.png"},
{"France", "fr.png"}};
}
Example 4: customize jcomboboc
package net.codejava.swing.combobox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
public class CountryComboBox extends JComboBox {
private DefaultComboBoxModel model;
public CountryComboBox() {
model = new DefaultComboBoxModel();
setModel(model);
setRenderer(new CountryItemRenderer());
setEditor(new CountryItemEditor());
}
public void addItems(String[][] items) {
for (String[] anItem : items) {
model.addElement(anItem);
}
}
}
Example 5: customize jcomboboc
package net.codejava.swing.combobox;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.plaf.basic.BasicComboBoxEditor;
public class CountryItemEditor extends BasicComboBoxEditor {
private JPanel panel = new JPanel();
private JLabel labelItem = new JLabel();
private String selectedValue;
public CountryItemEditor() {
panel.setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weightx = 1.0;
constraints.insets = new Insets(2, 5, 2, 2);
labelItem.setOpaque(false);
labelItem.setHorizontalAlignment(JLabel.LEFT);
labelItem.setForeground(Color.WHITE);
panel.add(labelItem, constraints);
panel.setBackground(Color.BLUE);
}
public Component getEditorComponent() {
return this.panel;
}
public Object getItem() {
return this.selectedValue;
}
public void setItem(Object item) {
if (item == null) {
return;
}
String[] countryItem = (String[]) item;
selectedValue = countryItem[0];
labelItem.setText(selectedValue);
labelItem.setIcon(new ImageIcon(countryItem[1]));
}
}
Example 6: customize jcomboboc
package net.codejava.swing.combobox;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
public class CountryItemRenderer extends JPanel implements ListCellRenderer {
private JLabel labelItem = new JLabel();
public CountryItemRenderer() {
setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weightx = 1.0;
constraints.insets = new Insets(2, 2, 2, 2);
labelItem.setOpaque(true);
labelItem.setHorizontalAlignment(JLabel.LEFT);
add(labelItem, constraints);
setBackground(Color.LIGHT_GRAY);
}
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
String[] countryItem = (String[]) value;
labelItem.setText(countryItem[0]);
labelItem.setIcon(new ImageIcon(countryItem[1]));
if (isSelected) {
labelItem.setBackground(Color.BLUE);
labelItem.setForeground(Color.YELLOW);
} else {
labelItem.setForeground(Color.BLACK);
labelItem.setBackground(Color.LIGHT_GRAY);
}
return this;
}
}