Java JTable缺少列标题

Java JTable缺少列标题,java,swing,jtable,invisible,jtableheader,Java,Swing,Jtable,Invisible,Jtableheader,非常简单的问题。请不要打我。:) 我通过扩展AbstractTableModel创建了一个表模型,如下所示: public class InventoryTableModel extends AbstractTableModel { private static final String[] COLUMN_NAMES = { "On Sale", "Name", "Selling Price", "Description" }; @Override public int

非常简单的问题。请不要打我。:)

我通过扩展
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);


JTable是否必须始终位于滚动窗格中?另外,你看到我更新的帖子说mainPanel位于滚动窗格中了吗?它不必位于
JScrollPane
中,但是如果你不将它放在滚动窗格中,你必须分别添加表头和表。把它放在
JScrollPane
中更容易。另外,如果您的数据超出其容器的界限,您可以滚动。请查看我更新的帖子。您知道为什么按照您的建议操作会导致滚动窗格(外部滚动窗格)显示垂直滚动条吗?
mainPanel.add(new JScrollPane(inventoryTable), BorderLayout.CENTER);