JDialog 内にスクロール可能な JTable があり、データの長さに応じて行幅を自動調整したいと考えています。
何か案は?
JTable.setRowHeightメソッドとJTextAreaに基づくセル レンダラーの組み合わせを使用する
これは、レンダリングされているものと、ピクセル数がわかっているかどうかによって異なります...
列幅の変更は、列の自動サイズ変更ポリシーによって影響を受けます。
ピクセル幅を設定したい場合...
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;