Khi đặt trình kết xuất tùy chỉnh trên tiêu đề JTable, tôi nhận được hành vi hình ảnh mong muốn (đường viền, phông chữ, căn chỉnh, ...) nhưng tôi không thể quản lý để nhận biểu tượng sắp xếp LaF thường xuất hiện khi các hàng được sắp xếp.JTable, biểu tượng sắp xếp đầu trang tùy chỉnh và biểu tượng phân loại
Đây là mã cho thiết lập các tiêu đề renderer tùy chỉnh:
Enumeration<TableColumn> columns = getColumnModel().getColumns();
while (columns.hasMoreElements())
columns.nextElement().setHeaderRenderer(new XDeliveryTableHeaderRenderer());
Đây là một đoạn trích của các renderer tiêu đề tùy chỉnh:
public class MyTableHeaderRenderer extends JLabel implements TableCellRenderer {
private static final Font labelFont = new Font("Arial", Font.BOLD, 11);
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setFont(labelFont);
setHorizontalAlignment(SwingConstants.CENTER);
setText(value.toString());
setBorder(BorderFactory.createEtchedBorder());
return this;
}
}
Bất kỳ gợi ý?
Thật không may là đã không thực hiện thủ thuật. Việc mở rộng JLabel và triển khai TableCellRenderer dẫn đến một tiêu đề có cùng màu nền và không có đường viền (do đó cần thiết phải đặt đường viền rõ ràng). Giải pháp bạn đề xuất (gọi là .... setHeaderRenderer (new MyTableHeaderRenderer (new DefaultTableCellRenderer()))) tạo một tiêu đề với nền trắng và vẫn không có biểu tượng sắp xếp - nhưng với cơ chế sắp xếp vẫn hoạt động. – s3lvatico
Ah xin lỗi quên, thay vì đi qua DefaultTableCellRenderer mới() bạn cần phải vượt qua table.getTableHeader(). GetDefaultRenderer(). –
Được ghi nhận, thử nghiệm, đánh giá, đánh giá cao. Nó hoạt động giống như một sự quyến rũ, cảm ơn :) – s3lvatico