2013-04-06 14 views
10

Tôi đã tìm kiếm một giải pháp để có thể tăng chiều cao của một hàng trong một JTable. Tôi đã sử dụng phương thức setRowHeight (int int) để biên dịch và chạy OK, nhưng không có hàng nào được tăng lên. Khi tôi sử dụng phương thức getRowHeight (int) của hàng tôi thiết lập chiều cao, nó in ra kích thước tôi tăng hàng lên, vì vậy tôi không chắc chắn những gì là sai. Đoạn mã dưới đây là một minh hoạ thô sơ như thế nào tôi đang cố giải quyết nó.Đặt chiều cao của một hàng trong một JTable trong java

Lớp học của tôi mở rộng JFrame.

String[] columnNames = {"Column 1", "Column 2", "Column 1 3"}; 

JTable table = new JTable(new DefaultTableModel(columnNames, people.size())); 

DefaultTableModel model = (DefaultTableModel) table.getModel(); 

int count =1; 
for(Person p: people) 
{ 
    model.insertRow(count,(new Object[]{count, p.getName(), p.getAge()+"", 
    p.getNationality})); 
    count++; 
} 

table.setRowHeight(1, 15);//Try set height to 15 (I've tried higher) 

Bất cứ ai có thể cho tôi biết tôi đang gặp sự cố ở đâu? Tôi đang cố gắng tăng chiều cao của hàng 1 đến 15 pixel?

+2

'Tôi đang sắp xếp mã của tôi làm ví dụ đó, và tôi thậm chí tăng chiều cao đến 100, và vẫn increase' visable. Đây là lý do tại sao bạn nên đăng [SSCCE] (http://sscce.org/) để chứng minh vấn đề. Chỉ vì bạn nói rằng bạn đang làm một cái gì đó không có nghĩa là bạn thực sự đang làm điều đó. Có thể bạn đã xác định hai bảng do nhầm lẫn và bạn đang thay đổi thuộc tính của bảng không thực sự được hiển thị. – camickr

+0

Xin lỗi tôi xấu, tôi đã sử dụng phương pháp setRowHeight (int int) trong vòng lặp, nhưng thay đổi nó thành setRowHeight (int) và nó hoạt động hoàn hảo ngay bây giờ. Cảm ơn bạn đã trả lời, được nhiều người yêu thích –

Trả lời

13

Không chắc chắn ý định rời hàng đầu tiên tại chỉ mục là 0 trống. Hàng trong JTable chạy từ chỉ mục 0. Tốt nhất là bạn có thể đăng một ví dụ hoàn chỉnh (ví dụ: SSCCE) để minh họa các vấn đề. So sánh với ví dụ này đơn giản mà hoạt động OK:

enter image description here

import javax.swing.*; 
import javax.swing.table.DefaultTableModel; 

public class DemoTable { 
    private static void createAndShowGUI() { 
     JFrame frame = new JFrame("DemoTable"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     DefaultTableModel model = new DefaultTableModel(); 
     model.setColumnIdentifiers(new Object[] { 
       "Column 1", "Column 2", "Column 3" }); 

     JTable table = new JTable(model); 
     for (int count = 0; count < 3; count++){ 
      model.insertRow(count, new Object[] { count, "name", "age"}); 
     } 
     table.setRowHeight(1, 30); 

     frame.add(new JScrollPane(table)); 
     frame.setLocationByPlatform(true); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String args[]) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 
+1

Cảm ơn rất nhiều vì đã trả lời. Khi tôi sắp xếp lại mã làm ví dụ của bạn, nó hoạt động ngay bây giờ.Nhiều đánh giá cao –

+0

@DouglasGrealis Bạn đang chào mừng, tôi rất vui vì nó đã giúp bạn! :) – tenorsax

11

Bạn có thể sử dụng:

hoặc nếu bạn muốn thiết lập chiều cao hàng cho một hàng cụ thể, sử dụng:

table.setRowHeight(int par1, int par2);

+0

Cảm ơn bạn đã trả lời. Như bạn thấy trong mã của tôi, tôi đã gọi nó, nhưng dường như không làm gì cả. –

+0

Thử sử dụng model.setRowHeight()? kể từ khi bạn gọi phương thức getModel() từ biến bảng – madcrazydrumma

+0

Tôi đã thử rằng ở đó, và trình biên dịch kết quả đầu ra: không thể tìm thấy biểu tượng setRowHeight tại vị trí DefaultTableModel? Cảm ơn một lần nữa –

2

Bạn cũng có thể thêm một tableModelListener?

model.addTableModelListener(new TableModelListener() { 
    @Override public void tableChanged(final TableModelEvent e) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override public void run() { 
       table.setRowHeight(e.getFirstRow(), 15); //replace 15 with your own height 
      } 
     }); 
    } 
}); 
+0

Cảm ơn bạn đã trả lời. Tôi có ghi đè lên những phương thức đó bên ngoài Constructor không? Cùng với JTable –

+0

Đó là những gì tôi đã làm @DouglasGrealis. Lớp JTable của tôi đã trở thành một TableModelListener và mô hình bảng của tôi đã thêm nó như là một TableModelListener. – user1283704