2009-09-30 38 views
5

Tôi có bảng có 3 cột có các giá trị sau trong tiêu đề: 'Không', 'X [mm]', 'Y [mm]'. Bảng này chứa tọa độ các điểm tính bằng milimét. Tôi có một hộp kiểm về việc kiểm tra xem bảng nên tái hiện lại để hiển thị tọa độ theo inch. Hơn nữa, các giá trị tiêu đề cột phải là: 'No.', 'X [in]', 'Y [in]'.Tự động thay đổi văn bản tiêu đề cột trong JTable

Tóm lại, tôi muốn thay đổi động văn bản tiêu đề của bảng.

Cụ thể: Bảng này là một phân lớp của JTable. Hơn nữa, một lớp con của 'DefaultTableModel' đã được đặt làm mô hình cho bảng. Tôi đã cung cấp các giá trị tiêu đề trong cấu trúc của lớp con datamodel.

Bất kỳ ý tưởng nào? Ứng dụng của tôi chỉ tương thích với jdk v1.4 vì vậy sẽ tốt nếu giải pháp tương thích với verion :)

Trả lời

24

Bạn có thể cập nhật các TableColumnModel trực tiếp:

JTableHeader th = table.getTableHeader(); 
TableColumnModel tcm = th.getColumnModel(); 
TableColumn tc = tcm.getColumn(0); 
tc.setHeaderValue("???"); 
th.repaint(); 
+0

Đây không phải là một giải pháp 100% vì nó chỉ hoạt động cho đến khi mô hình được thay đổi hoặc "tableStructureChanged "bị sa thải. Sau đó, văn bản cột sẽ được đọc lại từ mô hình. –

+3

Nếu đó là vấn đề bạn có thể sử dụng table.setAutoCreateColumnsFromModel (false) sau khi bảng được tạo ban đầu – camickr

+0

+1. Hoạt động tuyệt vời. Cảm ơn. – Withheld

2

Tôi không thể kiểm tra ở đây nhưng quen thuộc rằng phương pháp này '[DefaultTableModel.setColumnIdentifiers(...)][1]' nên làm những gì bạn muốn.

Về cơ bản, bạn chạy 'DefaultTableModel.getColumnCount()' để tìm hiểu số cột (trừ khi bạn đã biết). Sau đó, bạn chạy 'DefaultTableModel.getColumnName(int ColumnIndex)' để có được tên của mỗi, thay đổi nó theo cách bạn muốn và đặt nó trong một mảng. Sau đó, bạn đặt chúng trở lại bằng cách sử dụng 'DefaultTableModel.setColumnIdentifiers(...)'.

Hy vọng điều này sẽ hữu ích.

8

Nếu bạn có số cột sử dụng mã

jtable.getColumnModel().getColumn(5).setHeaderValue("newHeader"); 
+1

Bạn cần gọi hàm 'jtable.getTableHeader(). Repaint();' sau mã để cập nhật bảng. – Amin

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