e965. listening for changes to the rows and columns of a jtable component.txt

来自「这里面包含了一百多个JAVA源文件」· 文本 代码 · 共 56 行

TXT
56
字号
This example demonstrates how to detect row and columns being added, deleted, or changed in a table component. To listen for these events, a listener must be added to the JTable's table model. Note: When a column is added, the type of the event is UPDATE. 
    
table.getModel().addTableModelListener(new MyTableModelListener(table));
    
    public class MyTableModelListener implements TableModelListener {
        JTable table;
    
        // It is necessary to keep the table since it is not possible
        // to determine the table from the event's source
        MyTableModelListener(JTable table) {
            this.table = table;
        }
    
        public void tableChanged(TableModelEvent e) {
            int firstRow = e.getFirstRow();
            int lastRow = e.getLastRow();
            int mColIndex = e.getColumn();
    
            switch (e.getType()) {
              case TableModelEvent.INSERT:
                // The inserted rows are in the range [firstRow, lastRow]
                for (int r=firstRow; r<=lastRow; r++) {
                    // Row r was inserted
                }
                break;
              case TableModelEvent.UPDATE:
                if (firstRow == TableModelEvent.HEADER_ROW) {
                    if (mColIndex == TableModelEvent.ALL_COLUMNS) {
                        // A column was added
                    } else {
                        // Column mColIndex in header changed
                    }
                } else {
                    // The rows in the range [firstRow, lastRow] changed
                    for (int r=firstRow; r<=lastRow; r++) {
                        // Row r was changed
    
                        if (mColIndex == TableModelEvent.ALL_COLUMNS) {
                            // All columns in the range of rows have changed
                        } else {
                            // Column mColIndex changed
                        }
                    }
                }
                break;
              case TableModelEvent.DELETE:
                // The rows in the range [firstRow, lastRow] changed
                for (int r=firstRow; r<=lastRow; r++) {
                    // Row r was deleted
                }
                break;
            }
        }
    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?