我试图阻止我的JTable被重新调整大小的方式,其标题小于他们所持有的文本的大小。我遇到的问题是,我得到的每个头部组件的最小首选宽度仅为10,当每个头部组件中的值是“头1”,“头2”,“头3”等时,这显然太小上。如何获得JTable列标题组件的最小首选宽度,以便它的大小不能小于值?
我花了很多时间搜索和尝试实施各种建议,但还没有设法遇到一个解决方案。请参阅当前的代码我使用的是除了我的扩展的JTable:
public class MyTable extends JTable {
private Map<Integer, Integer> minSizeMap;
public void calculateMinColumnSizes() {
int width = 0;
int row = 0;
minSizeMap = new HashMap<Integer, Integer>();
for (int column = 0; column < columnModel.getColumnCount(); column++) {
TableColumn tableColumn = columnModel.getColumn(column);
TableCellRenderer renderer = tableColumn.getCellRenderer();
Component comp = this.prepareRenderer(renderer, row, column);
width = Math.max(comp.getPreferredSize().width, width);
minSizeMap.put(tableColumn.getModelIndex(), width);
}
}
}
原代码来自克列奥帕特拉的回答How to resize JTable column to string length?,但我已经改变了部分截至目前我只想得到最小的首选宽度并将其存储以供调整大小后的比较。
在我调用方法之前,所有的模型都已经设置好了,所以我对当组件的首选宽度为10时感到有点困惑,当时TableColumn的minWidth和preferredWidth默认值分别是15和75。
任何想法,我做了什么/理解错了吗?
猜测,但宽度= Math.max(comp.getPreferredSize()。宽度,column.getPreferredSize()。宽度) –