简体   繁体   English

JTable缺少列标题

[英]JTable Missing Column Headers

Really simple question. 真的很简单的问题。 Don't bash me please. 请不要害我。 :) :)

I created a table model by extending AbstractTableModel as follows: 我通过扩展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;
    }    
}

Next, I create a JTable using this table model and show it in a panel with layout BorderLayout : 接下来,我使用此表模型创建一个JTable并将其显示在具有BorderLayout布局的面板中:

JTable inventoryTable = new JTable(new InventoryTableModel());        
mainPanel.add(inventoryTable, BorderLayout.CENTER);

Note that mainPanel eventually ends up inside a scroll pane: 请注意, mainPanel最终会在滚动窗格中结束:

scrollPane.setViewportView(mainPanel);

For some reason I am not seeing the table headers. 由于某种原因,我没有看到表头。 Here is all my program shows: 这是我所有的节目显示:

缺少列标题

(Note, the white space is where the table is.) (请注意,空格是表格所在的位置。)

To make sure the table is being placed properly I modified the getRowCount method to return 1: 为了确保正确放置表,我修改了getRowCount方法以返回1:

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

And now this is what I see: 现在,这就是我所看到的:

缺少列标题-1行

Can anyone tell me why my column headers are missing? 谁能告诉我为什么我的列标题丢失了? I know it's something simple but my brain is fried and I just can't seem to figure it out. 我知道这很简单,但是我的大脑已经炸了,我似乎无法弄清楚。

Thank you. 谢谢。

Update, based on Josh M's answer I placed the table inside a scroll pane. 根据Josh M的答案进行更新,我将表格放在了滚动窗格中。 That worked but this is how my application looks now: 那行得通,但这就是我的应用程序现在的样子:

表格内部滚动窗格

Note the vertical scroll bar. 请注意垂直滚动条。

Change: 更改:

mainPanel.add(inventoryTable, BorderLayout.CENTER);

To

mainPanel.add(new JScrollPane(inventoryTable), BorderLayout.CENTER);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM