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 回答