【问题标题】:TableModel removeRow() definition [closed]TableModel removeRow() 定义
【发布时间】:2013-07-30 22:40:02
【问题描述】:

这是我的表格模型:

public class d9tableModel extends AbstractTableModel {

ArrayList<String> cols = new ArrayList<>();
ArrayList<ArrayList<String>> data = new ArrayList<>();

public d9tableModel() {
// initial cols and data with database
}

@Override
public int getRowCount() {
    return data.size();
}

@Override
public int getColumnCount() {
    return cols.size();
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    ArrayList<String> selectedRow = data.get(rowIndex);
    return selectedRow.get(columnIndex);
}

@Override
public String getColumnName(int column) {
    return cols.get(column);
}

public void removeRow(int rowNumber) {
    data.remove(rowNumber);
}
}

现在,在传递convertRowIndexToModel 行号后,不要删除行!

【问题讨论】:

  • -1 仍然没有学到任何东西(在一堆问题和轻推之后)a)没有应用 java 命名约定 b)模型没有通知它的听众。实际上,我快要失去耐心了:Go.Read.And.Understand.A.BasicTutorial。
  • 为什么你有一个 List> .. 创建你自己的类不是更好吗?.. 你必须通知视图fireTableRowsDeleted(int firstRow, int lastRow)
  • @nachokk 通过添加fireTableRowsDeleted(int firstRow, int lastRow),将行从表中删除,然后重新运行!
  • @Sajjad 我为什么要投票重新开放?您的编辑没有显示任何进展。可能(当然 :-) 听起来很刺耳,但是您必须学习基础知识,否则您将无法理解答案。

标签: java swing jdbc jtable


【解决方案1】:

改变这个

 public void removeRow(int rowNumber) {
        data.remove(rowNumber);
    }

public void removeRow(int rowNumber) {
    data.remove(rowNumber);
    fireTableRowsDeleted(rowNumber, rowNumber);
}

【讨论】:

  • 通过添加fireTableRowsDeleted(int firstRow, int lastRow),将Row从表中删除,然后重新运行!
  • 你也必须从你的数据库中删除..执行你的查询
  • @Sajjad 很难理解 swing tableModel 与您的数据库 table 不同? 您的工作是同步两者,不涉及任何魔法.. 无论如何,只要您不出示 SSCCE,您的基本问题就无法回答
  • @Sajjad as kleopatra 说没有魔法,你的数据库生活在另一个世界,你可以做的就是注册你自己的模型监听器,当fireTableRowsDeleted 被解雇时你抓住事件并删除从您的数据库中,但在某些情况下,您必须执行“从表中删除...”或在 data.remvoe(rowNumber) 调用一个使 delete from table where ... 的方法之前
猜你喜欢
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多