如何在java中添加和删除表

时间:2013-05-21 10:55:58

标签: java swing jtable add

我有一个用于制作表格的代码,并对输入的数据进行排序。如果我想使用按钮添加行来添加行而不是填充数据,并且也可以删除行,该怎么办? 这是我的代码:

public class TableSortDemo extends JPanel {
    private boolean DEBUG = false;

    class MyTableModel extends AbstractTableModel {
        private String[] columnNames = {"Nama",
                                        "NIM",
                                        "IPK"};
        private Object[][] data = {
        {"", new Integer(0),new Double(0)}
        };

        public boolean isCellEditable(int row, int col) {
            if (col < 2) {
                return false;
            } else {
                return true;
            }
        }
        public void setValueAt(Object value, int row, int col) {
            if (DEBUG) {
                System.out.println("Setting value at " + row + "," + col
                                   + " to " + value
                                   + " (an instance of "
                                   + value.getClass() + ")");
            }

            data[row][col] = value;

        }

        private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();

            for (int i=0; i < numRows; i++) {
                System.out.print("    row " + i + ":");
                for (int j=0; j < numCols; j++) {
                    System.out.print("  " + data[i][j]);
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

  1. 对于基于AbstractTableModel的JTable,需要覆盖

  2. 我将使用DefaultTableModel(see my post, how easy everything could be),强烈推荐newbee

  3. 一切都在JTable tutorial中描述,其余是(正确)在具体的API中

答案 1 :(得分:0)

首先,为什么不使用 ArrayList 来表示行中显示的实体。而不是:

private Object[][] data = {
{"", new Integer(0),new Double(0)}
};

有类似的东西:

private ArrayList<Thing> myThings;

它让事情变得简单得多。

如果要添加或删除行,则只需向表模型添加两个方法,例如:

public void addThing(Thing t) {..}
public void removeThing(Thing t) {..}

并使用 fireTableDateChanged()进行跟进;