JTable动态更改行高[重复]
Posted
技术标签:
【中文标题】JTable动态更改行高[重复]【英文标题】:JTable change the row height dynamically [duplicate] 【发布时间】:2011-03-28 03:35:32 【问题描述】:我在动态更改行的高度时遇到问题,是否有需要重载的方法?
--编辑--
抱歉,这是我的第一篇短文……我的问题实际上与根据内容更改行高有关。所以到目前为止我所做的是创建了一个实现 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,数据与视图无关。向模型添加数据时应该如何计算高度的行?模型和数据必须独立于视图。 IS 确实是设计的视图部分,应该计算如何将某些数据适合将要显示的任何小部件。我不是说它应该是渲染器,但模型肯定不应该。I'm not saying that it should be the renderer, but for sure the model shouldn't.
- 我没有说模型应该这样做。我建议你应该使用 TableModelListener 以便知道数据何时发生变化,然后调用逻辑来重新计算高度。
因为我花了 2 天时间才完成这项工作,我尝试了 table.setRowHeight(...);
如果您需要更多帮助,请发布您的 SSCCE。
【讨论】:
接受。非常直接的答案...【参考方案2】:您只需拨打setRowHeight(row, height);
。例如:
JTable t = new JTable(5, 5);
t.setRowHeight(2, 30);
将第 3 行设置为 30 高。
你的问题更复杂吗?你对这个问题没有说太多。
【讨论】:
以上是关于JTable动态更改行高[重复]的主要内容,如果未能解决你的问题,请参考以下文章