开发者

Resizing JTable columns automatically based on text size

开发者 https://www.devze.com 2023-03-27 06:44 出处:网络
I have a JTable with some fields with long text and some with little text. By default, this is how it looks:

I have a JTable with some fields with long text and some with little text.

By default, this is how it looks:

Resizing JTable columns automatically based on text size

Notice how the "Name" and "Title" rows are not shortened.

I would like to know two things:

  1. How to manually set the width of Headers(Such as Name, Title, Surname)
  2. How to automatically resize all of them depending on the text.

Here is the code:

    String[] columnNames = {"Name", "Title", "Surn开发者_运维技巧ame", "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));

I have looked at the Swing Tutorials but I either must have missed something or it isn't there.


I think that by defalut is there 80pixels, but you can change that with follows, for example ...

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

EDIT

to your second question is better look here, please there are lots of usefull examples about TableColumn


2.How to automatically resize all of them depending on the text.

Check out the Table Column Adjuster.

0

精彩评论

暂无评论...
验证码 换一张
取 消