Tôi có JTable xoay cơ bản và yêu cầu là khi được nhấp vào bất kỳ ô nào, toàn bộ hàng phải được tô sáng và cũng là ô được nhấp phải là màu khác với phần còn lại của hàng được đánh dấu.Swing JTable - Đánh dấu ô đã chọn bằng màu khác với phần còn lại của hàng đã chọn?
Hiện nay, tôi có isRowSelectionAllowed như đúng
tôi đã cố gắng sử dụng một tùy chỉnh TableCellRenderer đó là như sau:
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (isSelected) {
c.setBackground(Color.red);
}
else {
c.setForeground(Color.black);
c.setBackground(Color.white);
}
return c;
}
}
Nhưng điều đó dường như không làm việc (toàn bộ hàng là đánh dấu màu đỏ).
Tôi cũng đã cố gắng thiết lập thuộc tính UIManager như sau:
UIManager.put("Table.focusCellBackground",
new javax.swing.plaf.ColorUIResource (Color.red));
Nhưng điều đó dường như không làm việc, hoặc (mặc dù, khi tôi cố gắng thiết lập một biên giới sử dụng
UIManager.put("Table.focusCellHighlightBorder",
new BorderUIResource.LineBorderUIResource(Color.red));
rằng làm việc tốt)
Bạn có thể đưa ra bất kỳ đề xuất nào mà tôi có thể cần làm không?
Tôi đã thử điều này, nhưng nó không thay đổi màu sắc. Nó đi vào điều kiện if cho 'isCellSelected' và' isRowSelected', nhưng dường như không làm gì cả. –
Xin lỗi, lỗi của tôi - tôi đã thử, và điều này hoạt động. Cảm ơn rất nhiều. (Đặt câu trả lời này là câu trả lời được chấp nhận vì mã làm việc. Các câu trả lời khác cũng hữu ích cho việc học). –