我無法動態更改我的行的高度,是否有我需要重載的方法?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;
}
}
這將是這樣做的正確方法? 謝謝。
不,渲染器不應該改變表格行的高度。這應該在數據添加到模型時完成。這意味着您將在創建表格時進行計算。然後,您將使用TableModelListener監聽數據的更改,然後重新計算。 – camickr 2010-08-11 19:54:50
謝謝,這是一個更好的解決方案,因爲它會在數據層和視圖層之間創建分離。此外,我只需要在一個地方有代碼,而不必擔心每次更改表格佈局時都會創建更新代碼。 – kohlerfc 2010-08-11 22:01:05
@camickr,數據與視圖無關。在將數據添加到模型時,它應該如何計算高度的行?模型和數據必須獨立於視圖。 ** IS **確實是設計的視圖部分,它應該對如何在要顯示的任何小部件中適合某些數據進行計算。我並不是說它應該是渲染器,但肯定模型不應該。 – Sebastian 2012-02-22 09:01:46