如何为一个JTable设置各种行高

时间:2012-08-13 11:17:38

标签: java swing jtable tablecellrenderer

我有一个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;
    }

1 个答案:

答案 0 :(得分:4)

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

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