如何在JTable中设置cellrenenderer之外的表高度

时间:2013-08-02 16:41:00

标签: java swing jtable tablecellrenderer

大家早上好。我有一个Multilinecellrenenderer,它根据单元格的内容改变jtable行的高度。

    public Component getTableCellRendererComponent(JTable table, Object
        value, boolean isSelected, boolean hasFocus, int row, int column) {
    setText(value.toString());//or something in value, like value.getNote()...
    if (isSelected) {
        setForeground(table.getSelectionForeground());
        setBackground(table.getSelectionBackground());
    } else {
        setForeground(table.getForeground());
        setBackground(table.getBackground());
    }
    setSize(table.getColumnModel().getColumn(column).getWidth(),
            getPreferredSize().height);
    if (table.getRowHeight(row) <= getPreferredSize().height) {
            table.setRowHeight(row, getPreferredSize().height);
    }
    return this;
} 

据我所知,修改渲染器中的jtable使其在无限循环中运行,这发生在我使用logs语句验证的代码中。我也明白,我可以在添加模型的内容时修改行高,我已经尝试了所有我知道但我无法在renenderer外设置行的高度。任何人都可以帮助我如何在单元格重新装配器之外调用table.setRowHeight(int,int)

我正在使用以下语句

动态添加模型的内容
   for(ProductRow object: data){
       model.addRow(new Object[]{object.getProductNumber(),object.getDescription(),
               object.getLastTouchedOn(),object.getLastTouchedBy()});
       }

我只是不知道如何获取当前行号和首选高度。请帮我。感谢

1 个答案:

答案 0 :(得分:2)

正如@mKorbel在此example中所示,您可以从封闭组件的首选大小中导出setRowHeight()的所需大小。请务必随后调用pack()封闭框架。