2

我有一个包含一列的 JTable,每个表格单元格的单元格渲染是动态生成的 JPanel,因此每个表格单元格的高度应该根据其 JPanel 不同,我试图在渲染 jpanel 的地方更改行高但是它不工作。请告诉我如何在 JTable 中设置不同的 JTable 行高,

这就是我尝试这样做的方式,

    private QCellPanel renderer = new QCellPanel();
    private QCellPanel editor = new QCellPanel();

    @Override
    public Object getCellEditorValue() {
        return editor.getQuestion();
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        renderer.setQuestion((Qusetion) value);

        table.setRowHeight(renderer.getPreferredSize().height);
        return renderer;
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        editor.setQuestion((Qusetion) value);
        table.setRowHeight(editor.getPreferredSize().height);
        return editor;
    }
4

1 回答 1

4

您需要使用两个参数版本setRowHeight(rowNumber, height)

如果可能,您还应该避免更改方法中的行高getXComponent,因为setRowHeight会强制重新绘制表格,这将导致它再次请求渲染器组件等等......默认实现可能足够聪明,不会触发这个只要高度稳定,但如果你最终得到无限循环,我会先看看:)

于 2012-08-13T11:24:10.387 回答