![](/img/trans.png)
[英]How do I create a Java Swing JTable with header as first column, not as first row?
[英]SWING JTable: How do I make each row as high as it's tallest object?
我有一张桌子,其中呈现了一些对象,它们的大小是不固定的(属性列表)。 我希望每一行都与它的最高对象一样高,我很想这样做。 我考虑过要做这样的事情(见下文),但是我敢肯定还有更好的事情。
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected,
boolean hasFocus, int row,
int column)
{
/*....*/
this.setListData((Object[])value);
int height = new Double(getPreferredSize().getHeight()).intValue();
if (table.getRowHeight(row) < height)
table.setRowHeight(row, height);
/*....*/
return this;
}
渲染器中不应包含类似的代码。 相反,当您将数据加载到模型中时,请执行以下操作:
private void updateRowHeights()
{
try
{
for (int row = 0; row < table.getRowCount(); row++)
{
int rowHeight = table.getRowHeight();
for (int column = 0; column < table.getColumnCount(); column++)
{
Component comp = table.prepareRenderer(table.getCellRenderer(row, column), row, column);
rowHeight = Math.max(rowHeight, comp.getPreferredSize().height);
}
table.setRowHeight(row, rowHeight);
}
}
catch(ClassCastException e) {}
}
我会坚持使用您的解决方案。 我认为没有比这更简单的方法了。 不管您要检查每个单元格的高度如何,因此在渲染每个单元格时也可以这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.