栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无论索引如何,总是从DefaultTableModel中删除最后一行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无论索引如何,总是从DefaultTableModel中删除最后一行

所述

row
从得到的
columnAtPoint()
是在 坐标,而
removeRow()
假定 模型
坐标。引用相关教程部分:

除非通过排序,过滤或用户对列的操作重新排列了查看的数据,否则区别并不重要。

如果是这样,您将需要使用

convertRowIndexToModel()

排序和过滤

末尾介绍的,它建议:

使用分类器时,请始终记住要转换单元格坐标。

另外,请考虑使用

ListSelectionListener
代替
MouseAdapter

附录:您的实现

getValueAt()
继续访问提供给构造函数的数组,而模型的数据实际上存储在父实现中。如果你真的需要在模型的数据结构的更多控制,扩展
AbstractTableModel

import java.awt.EventQueue;import java.awt.Point;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.Jframe;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;public class MainJF extends Jframe {    private JTable tagsJT;    private TagsSelectionTableModel model;    private static int COLUMN_CHECK = 0;    private static int COLUMN_TAG_NAME = 1;    private static int COLUMN_TAG_ID = 2;    private static int COLUMN_EDIT_TAG = 3;    private static int COLUMN_DELETE_TAG = 4;    public MainJF() {        this.add(new JScrollPane(createTagsTable()));        pack();        setLocationRelativeTo(null);        setDefaultCloseOperation(EXIT_ON_CLOSE);    }    private JTable createTagsTable() {        String[] columnNames = {"0", "Tag", "2", "3", "4"};        Object[][] data = new Object[10][columnNames.length];        for (int i = 0; i < data.length; i++) { data[i][COLUMN_CHECK] = false; data[i][COLUMN_TAG_NAME] = "Tag " + i; data[i][COLUMN_TAG_ID] = i; data[i][COLUMN_EDIT_TAG] = "edit"; data[i][COLUMN_DELETE_TAG] = "delete";        }        model = new TagsSelectionTableModel(columnNames, data);        tagsJT = new JTable(model);        tagsJT.setRowSelectionAllowed(true);        tagsJT.addMouseListener(new TagsTableMA());        return tagsJT;    }    class TagsSelectionTableModel extends DefaultTableModel {        public TagsSelectionTableModel(String[] columnNames, Object[][] data) { super(data, columnNames);        }    }    class TagsTableMA extends MouseAdapter {        @Override        public void mousePressed(MouseEvent e) { Point p = e.getPoint(); int row = tagsJT.rowAtPoint(p); int col = tagsJT.columnAtPoint(p); if (col == COLUMN_DELETE_TAG) {     model.removeRow(row); }        }    }    public static void main(String args[]) {        EventQueue.invokeLater(new Runnable() { @Override public void run() {     new MainJF().setVisible(true); }        });    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号