2

1つの列を含む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

引数が 2 つのバージョンを使用する必要がありますsetRowHeight(rowNumber, height)

可能であれば、getXComponentメソッドで行の高さを変更することも避ける必要がありsetRowHeightます。テーブルが強制的に再描画されるため、レンダラー コンポーネントが再度要求されるなどの原因となります。デフォルトの実装は、おそらくこれをトリガーしないほど十分にスマートです。高さが安定している限り、しかし無限ループになってしまった場合、これは私が最初に見たものです:)

于 2012-08-13T11:24:10.387 に答える