JTable不会显示列标题

时间:2010-02-23 18:47:58

标签: java swing jtable

我有以下代码来实例化一个JTable:该表提供了正确数量的行和列,但没有列上标题的标志。

public Panel1()
{
    int  nmbrRows;

    setLayout(null);
    setBackground(Color.magenta);
    Vector colHdrs;

    //create column headers

    colHdrs = new Vector(10);
    colHdrs.addElement(new String("Ticker"));

    // more statements like the above to establish all col. titles       

    nmbrRows = 25;
    DefaultTableModel tblModel = new DefaultTableModel(nmbrRows, colHdrs.size());
    tblModel.setColumnIdentifiers(colHdrs);

    scrTbl = new JTable(tblModel);
    scrTbl.setBounds(25, 50, 950, 600);
    scrTbl.setBackground(Color.gray);
    scrTbl.setRowHeight(23);    
    add(scrTbl);

//rest of constructor
...

}

将此与其他制表代码相比较,我没有看到任何遗漏的步骤,但必须缺少某些内容。

4 个答案:

答案 0 :(得分:166)

JTable放入JScrollPane。试试这个:

add(new JScrollPane(scrTbl));

答案 1 :(得分:21)

此答案与接受答案之间的主要区别在于使用setViewportView() instead of add()

如何使用Eclipse IDE将JTable放入JScrollPane

  1. 通过“设计”标签创建JScrollPane容器。
  2. JScrollPane拉伸到所需大小(适用于绝对布局)。
  3. JTable组件拖放到JScrollPane(视口区域)的顶部。
  4. 结构>组件table应该是scrollPane的孩子。 enter image description here

    生成的代码将是这样的:

    JScrollPane scrollPane = new JScrollPane();
    ...
    
    JTable table = new JTable();
    scrollPane.setViewportView(table);
    

答案 2 :(得分:8)

如前面的答案所述,'正常'方式是将它添加到JScrollPane,但有时你不希望它滚动(不要问我什么时候:))。然后您可以自己添加TableHeader。像这样:

JPanel tablePanel = new JPanel(new BorderLayout());
JTable table = new JTable();
tablePanel.add(table, BorderLayout.CENTER);
tablePanel.add(table.getTableHeader(), BorderLayout.NORTH);

答案 3 :(得分:1)

    public table2() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 485, 218);
    setTitle("jtable");
    getContentPane().setLayout(null);

    String data[][] = { { "Row1/1", "Row1/2", "Row1/3" },
            { "Row2/1", "Row2/2", "Row2/3" },
            { "Row3/1", "Row3/2", "Row3/3" },
            { "Row4/1", "Row4/2", "Row4/3" }, };

    String header[] = { "Column 1", "Column 2", "Column 3" };

    // Table
    JTable table = new JTable(data,header);


    // ScrollPane
    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setBounds(36, 37, 407, 79);
    getContentPane().add(scrollPane);

   }

}

试试这个!!