0

JDialog 内にスクロール可能な JTable があり、データの長さに応じて行幅を自動調整したいと考えています。

何か案は?

4

2 に答える 2

2

JTable.setRowHeightメソッドとJTextAreaに基づくセル レンダラーの組み合わせを使用する

于 2012-10-21T02:00:32.267 に答える
0

これは、レンダリングされているものと、ピクセル数がわかっているかどうかによって異なります...

列幅の変更は、列の自動サイズ変更ポリシーによって影響を受けます。

ピクセル幅を設定したい場合...

int columnIndex = //... the index of the column
TableColumnModel columnModel = table.getColumnModel();
TableColumn tableColumn = columnModel.getColumn(columnIndex);
tableColumn.setWidth(pixelWidth);

列がテキストをレンダリングしていて、列に表示される文字数がわかっている場合は、レンダラー/テーブルのフォント メトリックを取得できます...

// If you're using a cell renderer, you will need to get the cell renderer
// to get th font metrics
FontMerics fm = table.getFontMetrics(table.getFont());
int pixelWidth = fm.stringWidth("M") * characterCount;

テキストベースのレンダラーを使用していない場合は、レンダラーを使用して幅のアイデアを得ることができます...

TableCellRenderer renderer = table.getCellRenderer(0, columnIndex);
// You can also use table.getDefaultRenderer(Class)
Component component = renderer.getTableCellRendererComponent(table,
                                  prototypeValue, // Some value the best represents the average value
                                  false,
                                  false,
                                  0,
                                  columnIndex);
int width = component.getPreferredWidth().width;
于 2012-10-21T05:15:43.080 に答える