JTable标识符不会显示

时间:2013-08-14 16:51:10

标签: java swing jtable jtableheader

我的JTable标识符不会显示。 我尝试了很多不同的东西,但即便有一点变化...... 所以现在我在这里问。

我的代码:

public void showTable() {
    String[] heads = {"PersonID", "Name", "Date", "Age"};

    DefaultTableModel model = new DefaultTableModel();

    model.setColumnIdentifiers(heads);
    model.setRowCount(4);

    JTable table = new JTable(model);

    int row = 2;

    table.setValueAt("Test1", row, 0);
    table.setValueAt("Test2", row, 1);
    table.setValueAt("Test3", row, 2);
    table.setValueAt("Test4", row, 3);


    mainBackgroundManager.add(table, BorderLayout.CENTER);
}

显示的是:

我也试过写这个但是也不行:

public void showTable() {
    DefaultTableModel model = new DefaultTableModel();

    model.setRowCount(4);
    model.setColumnCount(4);

    JTable table = new JTable(model);

    table.getColumnModel().getColumn(0).setHeaderValue("PersonID");
    table.getColumnModel().getColumn(1).setHeaderValue("Name");
    table.getColumnModel().getColumn(2).setHeaderValue("Date");
    table.getColumnModel().getColumn(3).setHeaderValue("Age");

    int row = 2;

    table.setValueAt("Test1", row, 0);
    table.setValueAt("Test2", row, 1);
    table.setValueAt("Test3", row, 2);
    table.setValueAt("Test4", row, 3);


    mainBackgroundManager.add(table, BorderLayout.CENTER);
}

谢谢。

1 个答案:

答案 0 :(得分:6)

有两种方法可供选择。来自JTable API的难度更大:

  

"请注意,如果您希望在独立视图中使用JTable(在外部   一个JScrollPane)并希望显示标题,你可以使用它   getTableHeader()并单独显示。"

看起来像那样:

JTableHeader header = table.getTableHeader();

mainBackgroundManager.add(header, BorderLayout.NORTH);
mainBackgroundManager.add(table, BorderLayout.CENTER);

更容易(首选):
JTable放在JScrollPane内。试试这个:

mainBackgroundManager.add(new JScrollPane(table), BorderLayout.CENTER);