Creating multi-line header for JTable

痞子三分冷 提交于 2019-12-24 04:24:08

问题


I use JTable GUI component with NetBeans.

  • I want to create multi-line headers

  • I am able to this, when I create custom renderer for table headers

  • BUT I don't want to, because I like default one (I use it everywhere else in program).

  • So the problem is : How to make header heigher?

My code :

String headers[] = new String[3];
    headers[0] = "Header1";
    headers[1] = "Header2";
    headers[2] = "<html><center>Long<br>Centered</br></center></html>";
    DefaultTableModel dtm = new DefaultTableModel();
    dtm.setColumnIdentifiers(headers);
    dtm.setRowCount(5);
    jTable1.setModel(dtm);
    jTable1.getTableHeader().setPreferredSize(
                new Dimension(jTable1.getColumnModel().getTotalColumnWidth(),32));

回答1:


Try the following:

table.getTableHeader().setPreferredSize(
      new Dimension(table.getColumnModel().getTotalColumnWidth(), 32));

This will change the size of the header:

To center the text, you can use the <center>-tag:

headers[2] = "<html><center>Long Centered<br>Header";

EDIT:

The alignment is set by your LookAndFeel. WindowsTableHeaderUI for example explicitly calls

setHorizontalAlignment(LEADING);

The easiest way to solve this is:

(JLabel)table.getTableHeader().getDefaultRenderer())
      .setHorizontalAlignment(SwingConstants.CENTER);

Note that this change is lost when you change your LookAndFeel afterwards.




回答2:


hi guys i tried this and it works:

    DefaultTableCellRenderer r;

    String headers[] = new String[3];
    headers[0] = "Category";
    headers[1] = "Item";
    headers[2] = "<html><center>Packaging<br>unit</center></br></html>";
    DefaultTableModel dtm = new DefaultTableModel();
    table.setModel(dtm);
    r = (DefaultTableCellRenderer)table.getTableHeader().getDefaultRenderer();
    r.setHorizontalAlignment(JLabel.CENTER);
    dtm.setColumnIdentifiers(headers);

    table.getTableHeader().setPreferredSize(new Dimension(table.getColumnModel().getTotalColumnWidth(),32));


来源:https://stackoverflow.com/questions/2343391/creating-multi-line-header-for-jtable

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!