我无法动态更改我的行的高度,是否有我需要重载的方法?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