如何在运行时在JFrame中添加JTable?

时间:2011-10-31 09:17:11

标签: java swing runtime jtable

我正在使用JFrame& JPanel创建一个frame.JFrame包含组合框,CheckBoxes,JLabels等。将JPanel的布局设置为“null”,因为我使用setBounds(int,int,int,int)来设置JFrame上组件的位置。

还有一个JButton(名为“Submit”)。在提交按钮上我添加了actionListener,所以如果我点击这个按钮,一个表将在帧上生成(在运行时)。

JTable在JFrame上成功显示,但Table列名不与JFrame一起显示(按下提交按钮时只显示表数据)。

我也在使用带有JTable的setBounds。在这种情况下我该怎么做?

submitButton.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
       Object ColumnName[] = {"Document Name", "Modified Date", "Size(in MB)"};
       Object data[][] = { {"test.txt", "24-Oct-2011", "540"}};
       table = new JTable(data,ColumnName);
       table.setBounds(20,230,330,100);
       panel.add(table);
       panel.repaint();
       panel.revalidate();
     }
});

尽快给我你所有宝贵的建议。 谢谢。

3 个答案:

答案 0 :(得分:2)

可能是revalidate();面板的方法。在面板上设置表格后callJScrollPane是最好的方法。

答案 1 :(得分:2)

我认为你不能:

  1. 使用setBounds(int, int, int, int),因为这是LayoutManager
  2. 的工作
  3. 在运行时重新创建JTable。只需实施DefalutTableModel,即可添加/删除TableRows,重置TableModel - 所有更改都会立即显示在JTable中。
  4. 你可以:

    1. (正如两个海报所提到的)将JTable放入JScrollPane
    2. 查看表格教程中的示例以及大量与Swing相关的示例here

答案 2 :(得分:1)

首先需要将JTable添加到JScrollPane中,然后将该JScrollPane添加到主面板中。

JScrollPane jsp = new JScrollPane(jtable);

看看这个:JTable

编辑:此主题讨论了同样的问题:Jtable Columns