JComboBox เป็นคลาสย่อยของ JComponent รวม ช่องข้อความ และ รายการแบบเลื่อนลง (drop-down) สร้าง Event: ActionListener, ChangeListener, ItemListener กำหนดขอบให้รายการได้โดย Custom Renderer ขยาย DefaultListCellRenderer และ override getListCellRendererComponent()
ไวยากรณ์
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus)
ตัวอย่าง: JComboBox พร้อมขอบและพื้นหลัง
import java.awt.*;
import javax.swing.*;
public class JComboBoxTest extends JFrame {
public JComboBoxTest() {
setTitle("JComboBox Test");
String[] cities = {"Hyderabad", "Mumbai", "Pune", "Bangalore", "Chennai", "Coimbatore"};
JComboBox<String> jcb = new JComboBox<>(cities);
jcb.setRenderer(new CustomComboBoxRenderer());
add(jcb, BorderLayout.NORTH);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
class CustomComboBoxRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
JLabel lbl = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
lbl.setBorder(BorderFactory.createEmptyBorder(7, 7, 7, 7)); // padding
lbl.setBackground(Color.LIGHT_GRAY);
return lbl;
}
}
public static void main(String[] args) {
new JComboBoxTest();
}
}
ผลลัพธ์

คำอธิบาย: Custom renderer ใส่ padding (EmptyBorder) และพื้นหลังสีเทาอ่อน ให้แต่ละรายการใน dropdown