Как установить заголовок для JTable? - PullRequest
13 голосов
/ 19 февраля 2010

С примером кода ниже:

String column_names[]= {"Serial Number","Medicine Name","Dose","Frequency"};
table_model=new DefaultTableModel(column_names,3);
table=new JTable(table_model);

Мы хотим установить заголовок с именами столбцов, как в column_names с приведенным выше кодом, но он не работает.Заголовок не виден, хотя таблица создается.

Ответы [ 4 ]

28 голосов
/ 19 февраля 2010

Чтобы увидеть заголовок, вы должны поместить таблицу в JScrollPane.

panel.add(new JScrollPane(table));

Или вы можете специально добавить tableHeader на вашу панель, если вы действительно не хотите полосу прокрутки (но: обычно вы не хотите такого поведения):

panel.add(table.getTableHeader(), BorderLayout.NORTH);
panel.add(table, BorderLayout.CENTER);
2 голосов
/ 19 февраля 2010

См. Здесь для получения дополнительной информации о JTables и TableModels

Заголовки JTable показываются только тогда, когда Таблица находится в области прокрутки, что обычно в любом случае и требуется. Если по какой-то причине вам нужно показать таблицу без области прокрутки, вы можете сделать:

panel.setLayout(new BorderLayout());
panel.add(table, BorderLayout.CENTER);
panel.add(table.getTableHeader(), BorderLayout.NORTH);
2 голосов
/ 19 февраля 2010

Прочитайте JTable API и перейдите по ссылке на учебник Swing в разделе «Как использовать таблицы» для рабочего примера. Хитрость в том, чтобы добавить таблицу в JScrollPane.

1 голос
/ 12 апреля 2014
MessageFormat header = null;

if (this.headerBox.isSelected())
{
  header = new MessageFormat(gradesLabel.toString());
}

MessageFormat footer = null;

if (this.footerBox.isSelected())
{
  footer = new MessageFormat(this.footerField.getText());
}

boolean fitWidth = this.fitWidthBox.isSelected();
boolean showPrintDialog = this.showPrintDialogBox.isSelected();
boolean interactive = this.interactiveBox.isSelected();

JTable.PrintMode mode = fitWidth ? JTable.PrintMode.FIT_WIDTH : 
  JTable.PrintMode.NORMAL;
try
{
  boolean complete = this.gradesTable.print(mode, header, footer, 
    showPrintDialog, null, 
    interactive, null);

  if (complete)
  {
    JOptionPane.showMessageDialog(this, 
      "Printing Complete", 
      "Printing Result", 
      1);
  }
  else
    JOptionPane.showMessageDialog(this, 
      "Printing Cancelled", 
      "Printing Result", 
      1);
}
catch (PrinterException pe)
{
  JOptionPane.showMessageDialog(this, 
    "Printing Failed: " + pe.getMessage(), 
    "Printing Result", 
    0);
}

На самом деле у объекта Jtable есть один метод - метод print (), который используется для передачи заголовка и нижнего колонтитула в качестве параметра для печати. ​​Здесь headerBox - это Jcheckbox, который я создал в своей программе, а также некоторые Jlabelsтакже там.Если вам это не нужно, значит удалите их из этого кода и запустите программу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...