2010-08-11 166 views
9

我無法動態更改我的行的高度,是否有我需要重載的方法?JTable動態更改行高

- 編輯 -

對不起,短後這是我第一次....真的是我的問題,改變依賴於內容的行高做。所以到目前爲止,我做了一個實現TabelCellRenderer的內部類。

這就是我現在正在做的行高計算。

private static class TextAreaRenderer extends JTextPane implements TableCellRenderer 
    { 


    public Component getTableCellRendererComponent(JTable table, Object value, 
               boolean isSelected, 
               boolean hasFocus, int row, 
               int column) 
    { 
     /* Setup Code here */ 

     this.setText(((String)value).getEntityName()); 
     int height = new Double(this.getPreferredSize().getHeight()).intValue(); 
     if (table.getRowHeight(row) < height) 
      table.setRowHeight(row, height); 

     /* some more code */ 

     return this; 
    } 

}

這將是這樣做的正確方法? 謝謝。

+3

不,渲染器不應該改變表格行的高度。這應該在數據添加到模型時完成。這意味着您將在創建表格時進行計算。然後,您將使用TableModelListener監聽數據的更改,然後重新計算。 – camickr 2010-08-11 19:54:50

+1

謝謝,這是一個更好的解決方案,因爲它會在數據層和視圖層之間創建分離。此外,我只需要在一個地方有代碼,而不必擔心每次更改表格佈局時都會創建更新代碼。 – kohlerfc 2010-08-11 22:01:05

+3

@camickr,數據與視圖無關。在將數據添加到模型時,它應該如何計算高度的行?模型和數據必須獨立於視圖。 ** IS **確實是設計的視圖部分,它應該對如何在要顯示的任何小部件中適合某些數據進行計算。我並不是說它應該是渲染器,但肯定模型不應該。 – Sebastian 2012-02-22 09:01:46

回答

5
table.setRowHeight(...); 

如果您需要更多幫助發佈您的SSCCE

+0

已被接受。非常直接地回答... – gumuruh 2012-01-20 07:20:06

2

您只需致電setRowHeight(row, height);即可。例如:

JTable t = new JTable(5, 5); 
t.setRowHeight(2, 30); 

會將第3行設置爲30高。

你的問題更復雜嗎?你沒有多說這個問題。