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

5
我是一位有用的助手,可以为您翻译文本。

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

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

enter image description here

注意,“名称”和“标题”行没有被缩短。
我想知道两件事:
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教程,但我可能错过了什么或者没有找到相关内容。


你在第二点中提到的问题是如何根据文本自动调整所有列的大小。你的意思是从每个TableColumn中计算出最大(例如String)长度,然后将其转换为像素吗? - mKorbel
2个回答

12

我认为默认情况下是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的许多有用示例。


7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接