Действительно простой вопрос. Не бей меня, пожалуйста. :)
Я создал модель таблицы, расширив AbstractTableModel
следующим образом:
public class InventoryTableModel extends AbstractTableModel {
private static final String[] COLUMN_NAMES = { "On Sale", "Name", "Selling Price", "Description" };
@Override
public int getColumnCount() {
return COLUMN_NAMES.length;
}
@Override
public int getRowCount() {
return 0;
}
@Override
public String getColumnName(int columnIndex) {
return COLUMN_NAMES[columnIndex];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return null;
}
}
Затем я создаю JTable
используя эту таблицу, и покажу ее в панели с макетом BorderLayout
:
JTable inventoryTable = new JTable(new InventoryTableModel());
mainPanel.add(inventoryTable, BorderLayout.CENTER);
Обратите внимание, что mainPanel
конечном итоге попадает внутрь панели прокрутки:
scrollPane.setViewportView(mainPanel);
По какой-то причине я не вижу заголовков таблиц. Вот все мои программы:
(Обратите внимание: пустое пространство - это таблица.)
Чтобы убедиться, что таблица правильно размещена, я изменил метод getRowCount
чтобы вернуть 1:
@Override
public int getRowCount() {
return 1;
}
И вот это я вижу:
Может ли кто-нибудь сказать мне, почему мои заголовки столбцов отсутствуют? Я знаю, это что-то простое, но мой мозг жарится, и я просто не могу понять это.
Спасибо.
Обновление, основанное на ответе Джоша М, помещало таблицу в панель прокрутки. Это сработало, но вот как выглядит мое приложение:
Обратите внимание на вертикальную полосу прокрутки.
Изменить:
mainPanel.add(inventoryTable, BorderLayout.CENTER);
к
mainPanel.add(new JScrollPane(inventoryTable), BorderLayout.CENTER);
JScrollPane
но если вы не поместите его в один, вы должны добавить заголовок таблицы и таблицу отдельно. Просто проще поместить его вJScrollPane
. Кроме того, если ваши данные выходят за пределы его контейнера, вы можете прокрутить.