2

大家,早安。我有一个 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 会使其在无限循环中运行,这发生在我使用日志语句验证的代码中。我也知道我可以在添加模型内容的过程中修改行高,并且我已经尝试了我所知道的一切,但我无法在渲染器之外设置行的高度。任何人都可以帮助我如何table.setRowHeight(int,int)在细胞渲染器之外打电话。

我正在使用以下语句动态添加模型的内容

   for(ProductRow object: data){
       model.addRow(new Object[]{object.getProductNumber(),object.getDescription(),
               object.getLastTouchedOn(),object.getLastTouchedBy()});
       }

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

4

1 回答 1

2

正如@mKorbel 在此示例setRowHeight()中所示,您可以从封闭组件的首选尺寸中得出所需的尺寸。确保包括pack()对封闭框架的后续调用。

于 2013-08-02T19:51:01.070 回答