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

Java 根据文本大小自动调整JTable列的大小,java,swing,jtable,Java,Swing,Jtable,我有一个JTable,其中有些字段有长文本,有些字段有小文本 默认情况下,它的外观如下所示: 注意“名称”和“标题”行是如何不缩短的 我想知道两件事: 如何手动设置标题宽度(如姓名、标题、姓氏) 如何根据文本自动调整它们的大小 代码如下: String[] columnNames = {"Name", "Title", "Surname", "ID"}; Object[][] testData = { {"John", "Mr.", "Doe", "61

我有一个JTable,其中有些字段有长文本,有些字段有小文本

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

注意“名称”和“标题”行是如何不缩短的

我想知道两件事:

  • 如何手动设置标题宽度(如姓名、标题、姓氏)
  • 如何根据文本自动调整它们的大小
  • 代码如下:

        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));
    

    我已经看过了,但我可能错过了什么,或者它不在那里

    我认为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.如何根据文本自动调整它们的大小


    查看。

    问题到您的观点
    2)如何根据文本自动调整所有表格的大小。
    您的意思是从每个表格列计算最大长度(例如字符串)并将其转换为像素吗