Trong Java làm thế nào để có được một JList
với các màu thay thế? Bất kỳ mã mẫu nào?Làm thế nào để tạo ra một Jlist với các màu thay thế
10
A
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.
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) –
vâng, tôi đã đề cập ở cuối bài đăng. – jjnguy
Nitrat nhỏ: phải được đặtSở nền thay vì đặtBackgroundColor. – ataylor