为JTable创建多行标题

mis*_*iso 2 java swing jtable

我在NetBeans中使用JTable GUI组件.

  • 我想创建多行标题

  • 当我为表头创建自定义渲染器时,我能够这样做

  • 但我不想,因为我喜欢默认的(我在程序中的其他地方使用它).

  • 所以问题是:如何使标题更高?

我的代码:

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));
Run Code Online (Sandbox Code Playgroud)

Pet*_*ang 5

请尝试以下方法:

table.getTableHeader().setPreferredSize(
      new Dimension(table.getColumnModel().getTotalColumnWidth(), 32));
Run Code Online (Sandbox Code Playgroud)

这将改变标题的大小:

替代文字http://img96.imageshack.us/img96/7544/so2343391.png

要使文本居中,可以使用<center>-tag:

headers[2] = "<html><center>Long Centered<br>Header";
Run Code Online (Sandbox Code Playgroud)

替代文字http://img710.imageshack.us/img710/705/so23436532.png

编辑:

对齐方式由LookAndFeel设置.WindowsTableHeaderUI例如显式调用

setHorizontalAlignment(LEADING);
Run Code Online (Sandbox Code Playgroud)

解决这个问题最简单的方法是:

(JLabel)table.getTableHeader().getDefaultRenderer())
      .setHorizontalAlignment(SwingConstants.CENTER);
Run Code Online (Sandbox Code Playgroud)

请注意,之后更改LookAndFeel时,此更改将丢失.