Tôi đã thực hiện lớp này CustomCellRenderer
có ý định sử dụng trong các đối tượng JXTreeTable
và JXTable
vì tôi có nhiều trong số này trong dự án của mình. Vì vậy, lớp này thực hiện TreeCellRenderer
và TableCellRenderer
giao diện:Custom TableCellRenderer/TreeTableCellRenderer không hiển thị các ô trong Bảng
public class CustomCellRenderer extends JLabel
implements TreeCellRenderer, TableCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
setBackground(selected ? new Color(83,142,213) : Color.white);
setForeground(selected ? Color.white : Color.black);
//here is the icon setting code but it's irrelevant to my problem
setText(value != null ? value.toString() : "<null>");
return this;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setBackground(isSelected ? new Color(83,142,213) : Color.white);
setForeground(isSelected ? Color.white : Color.black);
setText(value != null ? value.toString() : "<null>");
return this;
}
}
Và đây là mã nơi tôi đặt renderer:
jXTreeTableConsumos.setDefaultRenderer(Object.class, new CustomCellRenderer());
jXTreeTableConsumos.setTreeCellRenderer(new CustomCellRenderer());
tôi hy vọng nền và foreground trở thành màu xanh và trắng tương ứng khi liên tiếp là đã chọn. Tuy nhiên nó chỉ xảy ra ở ô trong bảng Tree (cột đầu tiên) trong khi chỉ thay đổi foreground và background tĩnh trắng trong các tế bào khác trong rất giống hàng đã chọn:
thể ai xin vui lòng cho tôi biết lý do tại sao các tế bào (tức là không phải là tế bào cây) không thay đổi màu nền của chúng?
không entendi la pregunta – nachokk
tôi don 't hiểu, một trong hai; tại sao 'Object.class'? _what_ không đổi thành màu xanh? Vui lòng chỉnh sửa câu hỏi của bạn để bao gồm một [sscce] (http://sscce.org/) thể hiện vấn đề bạn mô tả. – trashgod