0

NetBeans と Java Swing でアプリケーションを開発しています。次のリンクで Binklye のブログに出くわした Google 検索後のセル内のデータの長さに合わせて、jtable の列の幅を変更したいと考えています。

http://binkley.blogspot.com/2006/01/getting-jtable-columns-widths-to-fit.html

以下はコードスニペットです

{

    final TableCellRenderer renderer = getTableHeader()
            .getDefaultRenderer();

    for (int i = 0; i < getColumnCount(); ++i)
        getColumnModel().getColumn(i).setPreferredWidth(
                renderer.getTableCellRendererComponent(this,
                        getModel().getColumnName(i), false, false, 0, i)
                        .getPreferredSize().width);
}

public Component prepareRenderer(final TableCellRenderer renderer,
        final int row, final int column) {
    final Component prepareRenderer = super
            .prepareRenderer(renderer, row, column);
    final TableColumn tableColumn = getColumnModel().getColumn(column);

    tableColumn.setPreferredWidth(max(
            prepareRenderer.getPreferredSize().width,
            tableColumn.getPreferredWidth()));

    return prepareRenderer;
}

誰かにコードの実装を手伝ってもらいたいです。

一方、別のソリューションがあれば、それを見て喜んでいます。

4

2 に答える 2

2

テーブル列アジャスターを確認してください。

于 2013-03-17T18:18:40.903 に答える
0

これを試してください:

jtable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

行を追加または削除したときに起動される独自のカスタム メソッドを作成できます。サンプルコード:

public static void resizeRow(JTable table) {
        TableColumnModel columnModel = table.getColumnModel();
        for (int i = 0; i < columnModel.getColumnCount(); i++) {
            TableColumn column = columnModel.getColumn(i);
            column.setPreferredWidth(/*your logic of setting width*/);
        }

    }
于 2013-03-17T10:04:52.287 に答える