Заголовки отсутствующих столбцов JTable

1

Действительно простой вопрос. Не бей меня, пожалуйста. :)

Я создал модель таблицы, расширив 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);

По какой-то причине я не вижу заголовков таблиц. Вот все мои программы:

Изображение 174551

(Обратите внимание: пустое пространство - это таблица.)

Чтобы убедиться, что таблица правильно размещена, я изменил метод getRowCount чтобы вернуть 1:

@Override
public int getRowCount() {
    return 1;
}

И вот это я вижу:

Изображение 174551

Может ли кто-нибудь сказать мне, почему мои заголовки столбцов отсутствуют? Я знаю, это что-то простое, но мой мозг жарится, и я просто не могу понять это.

Спасибо.

Обновление, основанное на ответе Джоша М, помещало таблицу в панель прокрутки. Это сработало, но вот как выглядит мое приложение:

Изображение 174551

Обратите внимание на вертикальную полосу прокрутки.

Теги:
swing
jtable
invisible
jtableheader

1 ответ

1
Лучший ответ

Изменить:

mainPanel.add(inventoryTable, BorderLayout.CENTER);

к

mainPanel.add(new JScrollPane(inventoryTable), BorderLayout.CENTER);
  • 0
    Всегда ли JTable должен жить в области прокрутки? Кроме того, вы видели мой обновленный пост, в котором говорится, что mainPanel находится в области прокрутки?
  • 1
    Это не обязательно должно быть в JScrollPane но если вы не поместите его в один, вы должны добавить заголовок таблицы и таблицу отдельно. Просто проще поместить его в JScrollPane . Кроме того, если ваши данные выходят за пределы его контейнера, вы можете прокрутить.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню