Создание многострочного заголовка для JTable - PullRequest
2 голосов
/ 26 февраля 2010

Я использую JTable GUI компонент с NetBeans.

  • Я хочу создать многострочные заголовки

  • Я могу это сделать, когда создаю собственный рендер для заголовков таблиц

  • НО я не хочу, потому что мне нравится вариант по умолчанию (я использую его везде в программе).

  • Так вот проблема: Как сделать заголовок хайгер?

Мой код:

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

Ответы [ 2 ]

5 голосов
/ 26 февраля 2010

Попробуйте следующее:

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

Это изменит размер заголовка:

alt text

Для центрирования текста вы можете использовать тег <center>:

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

alt text

EDIT

Выравнивание устанавливается вашим LookAndFeel. WindowsTableHeaderUI например, явно вызывает

setHorizontalAlignment(LEADING);

Самый простой способ решить эту проблему:

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

Обратите внимание, что это изменение теряется при последующем изменении LookAndFeel.

1 голос
/ 31 июля 2012

привет, ребята, я попробовал это, и это работает:

    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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...