2010-08-12 51 views

Trả lời

4

Xem Concepts: Editors and Renderers, lưu ý "Number - được hiển thị bởi nhãn được căn phải." Chỉ cần TableModel trả lại lớp học chính xác. Ví dụ cụ thể, lưu ý rằng IntegerNumber, trong khi kiểm tra việc triển khai getColumnClass() trong số example này.

+0

Bạn đã thậm chí đã cố gắng này? điều này không hiệu quả. Ngay cả khi nó đã làm, tôi vẫn sẽ không thực sự thích cách tiếp cận này chỉ vì bạn đang cố gắng để lừa lớp nghĩ rằng bạn đang sử dụng một loại đối tượng nhất định, mà có thể có những hậu quả khác mà đi xa hơn chỉ cần sắp xếp văn bản. – searchengine27

+0

@ searchengine27: Cảm ơn bạn đã bình luận; Tôi đã sửa liên kết để trỏ đến một ví dụ điển hình hơn. Nó không phải là một thủ thuật; đó là [loại mã thông báo] (http://stackoverflow.com/a/13673688/230513). – trashgod

2

Bạn sẽ phải nhận DefaultTableCellRenderer cho ô bảng và gọi setHorizontalAlignment (căn chỉnh).

Ví dụ có thể được tìm thấy trên các liên kết:

http://www.techrepublic.com/article/how-to-justify-data-in-a-jtable-cell/5032692/

http://www.coderanch.com/t/337549/GUI/java/align-data-columns-JTable

+0

+1 Tôi hơi cảnh giác với các bài viết sai chính tả 'JTable', nhưng thanh bên hiển thị một ví dụ hoàn chỉnh. :-) – trashgod

+0

lớp RightTableCellRenderer mở rộng DefaultTableCellRenderer { được bảo vệ RightTableCellRenderer() { setHorizontalAlignment (JLabel.RIGHT); } tôi thêm mã này, sau đó làm cách nào tôi có thể đặt trình kết xuất thành cột jtable của mình. } – Arivu2020

8

Hãy thử điều này:

JTable tbl = new JTable(3,3) { 
    DefaultTableCellRenderer renderRight = new DefaultTableCellRenderer(); 

    { // initializer block 
     renderRight.setHorizontalAlignment(SwingConstants.RIGHT); 
    } 

    @Override 
    public TableCellRenderer getCellRenderer (int arg0, int arg1) { 
     return renderRight; 
    } 
}; 
+1

Tôi đã không nghĩ đến việc sử dụng khối khởi tạo trong các lớp ẩn danh. Giải quyết việc thiếu nhà xây dựng, độc đáo. – PeterVermont

+0

-1 cho ngắn mạch tất cả các hỗ trợ cho cấu hình renderer hạt mịn của bảng (bằng cách trả về một cho tất cả) Ngoài ra không có nhu cầu ở tất cả để phân lớp, thay vì sử dụng api của bảng/cột để cài đặt tùy chỉnh renderer khi cần thiết – kleopatra

23
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer(); 
rightRenderer.setHorizontalAlignment(JLabel.RIGHT); 
table.getColumnModel().getColumn(4).setCellRenderer(rightRenderer); 
+6

1 cho câu trả lời đúng, chỉ: a) * KHÔNG BẮT ĐẦU * b) hãy tìm hiểu các quy ước đặt tên java và gắn bó với chúng (bạn có thể chỉnh sửa câu trả lời và sửa cả hai) – kleopatra

+0

Tôi thấy nó hoạt động nhưng chỉ một phần. 1) Nếu bạn đặt trình kết xuất cột đầu tiên và sau đó là mô hình, mô hình sẽ vô hiệu hóa trình kết xuất đã được đặt, làm cho nó là 'null'. 2) Tôi đang sử dụng Nimbus L & F và trình kết xuất đồ họa mới được thiết lập thay đổi màu nền không phù hợp với các ô khác. Tôi có thể mở một câu hỏi về vấn đề này. – FaithReaper

Các vấn đề liên quan