如何将JTextField中的数据连续添加到JTable

时间:2016-03-26 14:37:06

标签: java swing jtable add

我希望将JTextFields的数据连续添加到Jtable。 当我单击添加按钮时,JTextFields中的文本必须插入Jtable。

单击添加按钮时,此代码仅生成一行。 我希望将行添加到之前插入的行中。

    public void actionPerformed(ActionEvent arg0) {
        DefaultTableModel model = new DefaultTableModel();
        table_1.setModel(model);
        model.addColumn("Product Name");
        model.addColumn("Product Price");
        model.addColumn("Quantity"); 
        String name = jFrame_pName.getText().trim();
        String price = jFrame_pPrice.getText().trim();
        String quantity = jFrame_quantity.getText().trim();
        String st[] = {name, price, quantity};
        model.addRow(st);
    }

我是否需要在表格中添加EventHandler?谢谢。请帮我完成作业。

1 个答案:

答案 0 :(得分:4)

移动这部分:

    DefaultTableModel model = new DefaultTableModel();
    table_1.setModel(model);
    model.addColumn("Product Name");
    model.addColumn("Product Price");
    model.addColumn("Quantity"); 

到您的构造函数并将模型定义为实例成员。不要为每个按钮点击创建表模型。以下部分足以容纳actionPerformed

public void actionPerformed(ActionEvent arg0) { 
    String name = jFrame_pName.getText().trim();
    String price = jFrame_pPrice.getText().trim();
    String quantity = jFrame_quantity.getText().trim();
    String st[] = {name, price, quantity};
    model.addRow(st);
}

修改

如果您分享完整的代码,我可以告诉您将上述部分放在哪里。但是现在,下面的示例代码可以指导您。

public class TableClass {
     DefaultTableModel model;

     public TableClass() {
        model = new DefaultTableModel();
        table_1.setModel(model);
        model.addColumn("Product Name");
        model.addColumn("Product Price");
        model.addColumn("Quantity"); 


        JButton addButton = JButton("Add");
        addButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                 String name = jFrame_pName.getText().trim();
                 String price = jFrame_pPrice.getText().trim();
                 String quantity = jFrame_quantity.getText().trim();
                 String st[] = {name, price, quantity};
                 model.addRow(st);
            }
        })
     }
}