Như các bạn đã biết, SwingX là thư viện được kế thừa từ Swing. Các component của SwingX được kế thừa từ các component tương ứng trong Swing, mà cụ thể ở đây, JXTable được kế thừa từ JTable. Do vậy, cách sử dụng của JXTable hoàn toàn tương tự như JTable. Cũng chính vì lẽ đó, sau bài giới thiệu về SwingX, mình đã có một loạt bài cơ bản về cách sử dụng của JTable để làm nền cho bài viết này.
Sẽ chẳng có gì để viết thêm nếu như JXTable không có thêm một số tính năng hay ho mà mình sắp giới thiệu ở đây. Bạn hãy dành 2 phút xem clip này:
Rất hay phải không các bạn Giờ chúng ta sẽ cùng tìm hiểu cụ thể những tính năng này nhé.
Sorting
JXTable hỗ trợ sẵn sorting. Khi bạn click chuột vào header, các row của bảng sẽ được sắp xếp theo giá trị của cột có header được click. Mỗi lần click, sự sắp xếp sẽ được tự động đảo chiều tăng dần hay giảm dần. Bạn sẽ hỏi JXTable căn cứ vào đâu để thực hiện việc sắp xếp các giá trị? Khác với JTable, JXTable mặc định enable autoCreateRowSorter
. Do đó, nó tự động tạo ra và sử dụng một row sorter mặc định được cung cấp bởi phương thức createDefaultRowSorter
.
Dĩ nhiên, bạn cũng có thể can thiệp vào quá trình này để tự mình chỉ ra comparator
so sánh giá trị để sắp xếp, hay bạn có thể disable sorting trên một cột trong bảng.
Column Control
Như bạn đã thấy trên clip, JXTable của mình có một nút nhỏ ở góc trên bên phải. Đó chính là Column Control. Column Control các tác dụng giúp cho người dùng ẩn đi các cột không cần thiết, để có tầm nhìn tốt hơn các cột muốn tập trung.
Mặc định, Column Control được ẩn đi. Bạn làm nó xuất hiện bằng cách setColumnControlVisible(true)
.
Highlighter
Theo con mắt thẩm mỹ của mình, Highlighter giúp cho giao diện của bảng đẹp hơn rất nhiều. Có lẽ mình sẽ có một bài viết riêng nói về cách sử dụng Highlighter sau.
Trong clip demo, mình mới chỉ sử dụng một highlighter đơn giản làm background cho bảng được tạo ra bằng cách:
Highlighter simpleStripHL = HighlighterFactory.createSimpleStriping(); jxTable.setHighlighters(simpleStripHL);
Rollover
Rollover là hiệu ứng khi mà bạn di chuột đến row nào trong bảng thì row đó đổi màu. Đây cũng là một cách rất hay để làm đẹp giao diện. Bản chất của nó chính là một highlighter. Cách sử dụng như sau:
jxTable.addHighlighter(new ColorHighlighter(HighlightPredicate.ROLLOVER_ROW, null, new Color(255, 102, 0)));
Phương thức mình dùng sử dụng một constructor của lớp ColorHighlighter. Tham số đầu tiên là kiểu rollover. Bạn có thể thay thế ROLLOVER_ROW
bằng ROLLOVER_CELL
hay ROLLOVER_COLUMN
để có hiệu ứng rollover trên từng ô, từng cột của bảng. Tham số thứ 2 là màu background. Mình không muốn để màu nền nên set nó bằng null
. Và tham số thứ 3 là màu text, được set mà màu da cam như bạn thấy.
Search
Cái search popup hiện ra trên JXTable trong clip demo là hoàn toàn được support sẵn, mình không hề tốn dòng code nào để tạo ra nó. Quá tuyệt phải không các bạn Một box tìm kiếm với đầy đủ tùy chọn như case sensitive hay backward.
Từng đó tính năng đã đủ cho bạn muốn sử dụng JXTable thay vì JTable truyền thống chưa?
Happy Coding!