Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

กำหนดขอบให้รายการ JComboBox ใน Java

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();
    }
}

ผลลัพธ์

กำหนดขอบให้รายการ JComboBox ใน Java

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