2009-07-02 35 views

Trả lời

14

Để tùy chỉnh giao diện của một ô JList bạn cần phải viết cách triển khai của riêng mình là ListCellRenderer.

Một thi mẫu của class có thể trông như thế này: (phác thảo thô, chưa được thử nghiệm)

public class MyListCellThing extends JLabel implements ListCellRenderer { 

    public MyListCellThing() { 
     setOpaque(true); 
    } 

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
     // Assumes the stuff in the list has a pretty toString 
     setText(value.toString()); 

     // based on the index you set the color. This produces the every other effect. 
     if (index % 2 == 0) setBackground(Color.RED); 
     else setBackground(Color.BLUE); 

     return this; 
    } 
} 

Để sử dụng renderer này, trong constructor JList của bạn đặt mã này:

setCellRenderer(new MyListCellThing()); 

Để thay đổi hành vi của ô dựa trên lựa chọn và có tiêu điểm, hãy sử dụng các giá trị boolean được cung cấp.

+0

Cẩn thận, bạn cần xử lý trường hợp hàng được chọn (thay đổi màu sắc) –

+0

vâng, tôi đã đề cập ở cuối bài đăng. – jjnguy

+0

Nitrat nhỏ: phải được đặtSở nền thay vì đặtBackgroundColor. – ataylor

Các vấn đề liên quan