如何从JTextField和JComboBox接收值并将数据行添加到JTable中

16

我有一个包含JTextFieldJComboBox等控件的JFrame表单,并且我能够将这些值接收到变量中,现在我想在用户单击"添加"或类似按钮时将接收到的数据添加到JTable中的新行。

我使用NetBeans创建了JTable,问题是如何编写代码将这些变量的数据添加到表格的行中。 希望能给出一个基本示例。 我尝试过很多示例,并将代码添加到JButtonActionListener中,但没有任何反应。 我尝试过的示例链接是:如何在JTable中添加行?如何使用AbstractTableModel方法向JTable添加行?

非常感谢您的帮助。


在创建JTable时,您需要使用表格模型。调用表格模型的addRow()方法来添加新的数据行。 - Rahul
同意,先生。我知道这与Netbeans有关,但我想了解如何将数据添加到接收到的行中。一个基本的例子或已经存在的例子就足以满足我的需求。 - Nawaz
@user3197695:“但我想知道如何将数据添加到接收到的行中的基本思路”,一切都在官方Oracle教程中有所描述 - 如何使用表格,一个基本示例或已经存在的示例就足以满足我的需求,有可行的代码示例。 - mKorbel
3个回答

27
  • 设置表格列标题
    1. 在设计视图中突出显示表格,然后转到极右侧的属性窗格。 应该有一个标签,上面写着“属性”。 确保突出显示的是表格而不是周围的滚动窗格,否则下一步将无法工作。
    2. 单击属性model右侧的...按钮。 应该会出现一个对话框。
    3. 将行设置为0,设置您想要的列数以及它们的名称。
  • 在框架中添加一个按钮,这个按钮将在用户准备提交一行时点击

    1. 右键单击按钮,然后选择事件 -> 操作 -> actionPerformed
    2. 您应该会看到自动生成的以下代码

      private void jButton1ActionPerformed(java.awt.event.ActionEvent) {}
      
    3. jTable1将使用DefaultTableModel。 您可以使用您的数据向模型添加行

    4. private void jButton1ActionPerformed(java.awt.event.ActionEvent) {
          String data1 = something1.getSomething();
          String data2 = something2.getSomething();
          String data3 = something3.getSomething();
          String data4 = something4.getSomething();
      
          Object[] row = { data1, data2, data3, data4 };
      
          DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
      
          model.addRow(row);
      
          // clear the entries.
      }
      

因此,对于每组数据(例如来自几个文本字段、组合框和复选框),您可以每次按下按钮时收集该数据并将其添加为模型的一行。


1
peeskillet和@eatSleepCode非常感谢你们,你们救了我。真的非常感谢。我实现了我想要的东西。 - Nawaz
我受益于这篇文章。 - Humphrey
不要这么谦虚,peeskillet,这是一个很棒的教程! - Yster

9
你可以使用这段代码作为模板,请根据你的需求进行定制。
DefaultTableModel model = new DefaultTableModel();
List<String> list = new ArrayList<String>();

list.add(textField.getText());
list.add(comboBox.getSelectedItem());

model.addRow(list.toArray());

table.setModel(model);

这里使用 DefaultTableModel 添加行到 JTable 中,你可以在这里获取更多信息。


1
明白了,伙计。我已经完成了我想要的。 - Nawaz

7
String[] tblHead={"Item Name","Price","Qty","Discount"};
DefaultTableModel dtm=new DefaultTableModel(tblHead,0);
JTable tbl=new JTable(dtm);
String[] item={"A","B","C","D"};
dtm.addRow(item);

这是解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接