我在 JDialog 中有一个可滚动的 JTable,我希望根据数据长度自动调整行宽。
有任何想法吗?
这取决于正在渲染的内容以及您是否知道像素数...
更改列宽将受列自动调整大小策略的影响。
如果要设置像素宽度...
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;