根据文本大小自动调整JTable列的大小

我有一个JTable,其中一些字段包含长文本,一些字段包含少量文本。

默认情况下,它的外观如下:

在此处输入图像描述

注意如何缩短“名称”和“标题”行。

我想知道两件事:

  1. 如何手动设置标题的宽度(如姓名,标题,姓氏)
  2. 如何根据文本自动调整所有这些大小。

这是代码:

String[] columnNames = {"Name", "Title", "Surname", "ID"}; Object[][] testData = { {"John", "Mr.", "Doe", "61020384U"}, }; nameTable = new JTable(testData, columnNames); nameTable.setFont(new Font("Tahoma", Font.PLAIN, 11)); window.add(new JScrollPane(nameTable)); 

我看过Swing Tutorials,但我要么错过了一些东西,要么就是不存在。

我认为defalut有80像素,但你可以改变它,例如……

 TableColumnModel tcm = myTable.getColumnModel(); tcm.getColumn(0).setPreferredWidth(100); //Name tcm.getColumn(1).setPreferredWidth(40); //Title tcm.getColumn(2).setPreferredWidth(400); //Surname tcm.getColumn(3).setPreferredWidth(40); //ID 

编辑

对于你的第二个问题,请看这里有更多关于TableColumn的有用示例

2.如何根据文本自动调整所有大小。

查看表格列调整程序 。