【问题标题】:Insert a new row in jTable automatically while entering data in the last row在jTable中自动插入新行,同时在最后一行输入数据
【发布时间】:2017-10-07 06:55:20
【问题描述】:

到目前为止我做了什么?

我创建了一个业务应用程序,它需要借助 jTable 添加信息。下面是我的jTable的图片。

此处的“+”按钮添加一个新行,而“-”按钮在单击相应按钮时删除选定的行。

我需要什么?

当用户在运行时开始向最后一行添加数据时,我需要了解在最后一行之后插入新行的任何事件或事物。

具体来说,我不需要任何按钮事件来添加行。该行必须在最后一行不再为空时自动插入。

请帮忙!

【问题讨论】:

    标签: java swing jtable actionlistener


    【解决方案1】:

    您可以使用TableModelListener 进行尝试。基本理念:每当编辑单元格时,您都会收到通知。然后,您可以检查该单元格是否在最后一行,如果是,则在表格中添加一个新行。

    DefaultTableModel tableModel = new DefaultTableModel();
    JTable table = new JTable(tableModel);
    
    tableModel.addTableModelListener(new TableModelListener() {
      @Override
      public void tableChanged(TableModelEvent e) {
        if ((e.getLastRow() + 1) == tableModel.getRowCount()) {
          // something was entered into the last row, add a new row
        }
      }
    });
    

    【讨论】:

    • 谢谢@cello。它就像一个魅力。如果我想删除所有的空白行,我应该使用什么条件?
    • 删除空行可能更难,因为必须确保用户不再编辑该行(没有一个单元格具有焦点)。我会问这是一个新问题。
    • 这会导致我陷入无限循环,每次使用 tableModel.addRow 添加一行时,它都会触发一个新的 tableChanged 事件,因此会添加另一行。
    猜你喜欢
    • 2020-01-18
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多