Quantcast
Channel: Codeimba.com» Java
Viewing all articles
Browse latest Browse all 10

Căn giữa header của JTable

$
0
0

Header của JTable chính là những thanh tiêu đề trên mỗi cột của nó. Trên hầu hết các Look and Feel, header của bảng luôn được căn lề bên trái. Điều này dẫn đến việc những người kỹ tính (như mình chẳng hạn) sẽ thấy nó không đẹp mắt chút nào, đặc biệt nếu một cột có độ rộng lớn. Đó là lý do tại mình muốn căn giữa header của JTable.

Cũng không có gì nhiều để chia sẻ với các bạn. Nó chỉ là một vài dòng code mà thôi, giúp bạn tiết kiệm thời gian tìm kiếm trên Google.

Để căn giữ header của bảng, bạn có thể code như sau:

// center the table header
TableColumnModel columnModel = myTable.getColumnModel();
myTable.setTableHeader(new JXTableHeader(columnModel) {

    @Override
    public void updateUI() {
        super.updateUI();
        // need to do in updateUI to survive toggling of LAF
        if (getDefaultRenderer() instanceof JLabel) {
            ((JLabel) getDefaultRenderer()).setHorizontalAlignment(JLabel.CENTER);
        }
    }
});

Hoặc một cách tương tự khác:

// center title column
TableCellRenderer myRenderer = myTable.getTableHeader().getDefaultRenderer();
JLabel label = (JLabel) myRenderer;
label.setHorizontalAlignment(JLabel.CENTER);

Hai cách code trên về cơ bản là chung một nguyên tắc. Nhưng thực tế có một vài trường hợp đặc biệt 1 trong 2 cách có thể không hiệu quả. Mình nêu cả 2 cách để thêm một phương án dự phòng cho các bạn.

Các bạn cũng để ý rằng, không chỉ có các ô của bảng, mà cả header của nó cũng được vẽ nên bởi các renderer. Nếu bạn sử dụng JXTable trong SwingX, cách làm hoàn toàn giống nhau. Bạn có thể thay JTableHeader bằng JXTableHeader ở đoạn code đầu tiên trong trường hợp này.

Happy Coding! 40 Căn giữa header của JTable


Viewing all articles
Browse latest Browse all 10

Latest Images

Trending Articles