jtable删除行的问题
jtable排序后删除行,会出现索引不对应的问题
//设置列表可排序
jTable1.setAutoCreateRowSorter(true);
解决办法
关键代码:
//转换为Model的索引,这句很重要,否则索引不对应
rowIndexes[i] = jTable1.convertRowIndexToModel(rowIndexes[i]);
//排序,这句很重要,否则顺序是乱的
Arrays.sort(rowIndexes);
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) { int[] rowIndexes = jTable1.getSelectedRows(); if(rowIndexes.length == 0){ JOptionPane.showMessageDialog(null, "请选择行后再删除!"); return; } int r = JOptionPane.showConfirmDialog(null, "你确定要删除吗?", "确认删除", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (r != JOptionPane.YES_OPTION) { return; } for (int i = 0; i < rowIndexes.length; i++) { //转换为Model的索引,这句很重要,否则索引不对应 rowIndexes[i] = jTable1.convertRowIndexToModel(rowIndexes[i]); } //排序,这句很重要,否则顺序是乱的 Arrays.sort(rowIndexes); DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel(); //降序删除 for(int i=rowIndexes.length-1; i>=0; i--){ tableModel.removeRow(rowIndexes[i]); //与Model对应的列表数据,含有更多元数据 //MainFrame.resultList.remove(rowIndexes[i]); } }
网上很多人写的删除方法都不涉及表格排序,涉及表格排序的转换索引后又不排序,
真心感觉jtable的操作太麻烦了,比winform的差多了。
相关推荐
在Java Swing应用中,`JTable`是一种常用的组件,用于展示和操作二维数据。它提供了丰富的功能,如排序、选择和编辑。然而,`JTable`默认并不支持行间的拖放(Drag and Drop, DnD)操作。本文将详细介绍如何通过一种...
在Java Swing应用开发中,`JTable`是一个非常重要的组件,用于展示二维表格数据。它提供了丰富的功能,如数据编辑、排序、选择等。而"JTable表头合并"是Swing中的一个高级特性,允许开发者创建具有复杂结构的表头,...
4. **行选择**:jTable允许单行或多行选择,可以通过`setSelectionMode()`设置选择模式。 5. **表头自定义**:通过`setTableHeader()`可以设置自定义的表头,可以添加工具提示、更改字体样式等。 6. **事件监听**...
`JTable`的`TableModel`接口提供了添加、删除和修改行的方法,使得在程序运行时可以动态更新表格内容。 8. **性能优化**: 当处理大量数据时,为了提高性能,可以使用虚拟化技术,只渲染当前可视区域的行,而不是...
在Java编程领域,`JTable`是Swing库中用于创建和展示表格数据的重要组件。在实际应用中,我们有时需要展示更为复杂的数据结构,这时就需要用到多级表头(multiheader)。多级表头允许我们在表格的列或者行上设置多个...
此外,标签提到的"Java Swing JTable 筛选"意味着这个示例可能还涉及到了其他类型的JTable筛选方法,比如使用RowFilter类实现基于用户输入的动态筛选,或者使用TableSorter类实现排序和筛选的组合。 在...
`JTable`允许用户选择一行或多行,甚至可以添加复选框以实现多选操作。这需要配置`SelectionModel`和使用`CheckboxTableRenderer`。 9. **滚动面板集成(Integration with Scroll Pane)**: 通常,`JTable`会被...
例如,JTable 可以用来显示数据库中的数据,允许用户进行排序、过滤和编辑。 颜色、字体、图标等视觉元素在Swing中也可以轻松设置,通过组件的属性或者外观(LookAndFeel)进行定制。Swing支持跨平台的LookAndFeel...
8. JTable:展示表格数据,支持排序、过滤等功能。 9. JMenu和JMenuItem:构建菜单栏和菜单项,提供下拉菜单功能。 三、事件处理 Swing使用事件监听器模式处理用户交互。例如,为JButton添加一个ActionListener,...
- JTable:用于展示表格数据,可进行排序、选择和编辑。 - JTree:展示层次结构的数据,如文件系统目录。 - JTabbedPane:创建带有多个面板的选项卡,每个面板可以包含不同的组件。 2. **布局管理器** - Swing...
9. JList和JTable:用于展示列表数据和表格数据,可以进行排序和筛选。 10. JScrollPane:滚动条组件,用于包含那些可能超出视图范围的组件。 11. JOptionPane:用于创建弹出对话框,如警告、确认、输入等。 ...
Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。这个“深入浅出Swing程序源代码”压缩包文件提供了丰富的示例,帮助开发者了解和学习如何在Java应用程序中有效地...
根据提供的文件信息,可以看出标题与描述提及的是关于Java Swing程序...通过以上内容,我们可以了解到Swing为Java开发者提供了强大而灵活的GUI开发工具,掌握了这些基础知识后,便可以着手创建自己的Swing应用程序了。
7. **JTextArea** 和 **JTextField**: 用于输入和显示文本,JTextArea支持多行编辑,而JTextField则是一行文本输入。 8. **JTable**: 用于展示表格数据,可以进行排序、选择和编辑。 9. **JTree** 和 **JList**: ...
Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。在 Swing 中,开发者可以创建丰富的、高度可定制的桌面应用程序。本教程主要聚焦于Swing中的各种组件及其用法,...
- **JTable**: 用于展示二维数据集,支持排序、筛选和编辑。 2. **容器组件** - **JFrame**: 是Swing中的顶级容器,用于承载其他组件,创建独立窗口。 - **JPanel**: 基本的容器,通常用作组件的容器或自定义...
7. 表格(JTable):Swing的表格组件可以显示和编辑多行数据,支持排序、选择、过滤等功能。 8. 树形视图(JTree):用于展示层次结构的数据,如文件系统目录结构。 9. 滚动面板(JScrollPane):用于包含可能超出...
9. **JTable**: JTable用于显示二维表格数据,支持排序、选择和编辑。开发者可以通过TableModel来管理表格的数据。 10. **JScrollPane**: JScrollPane是滚动面板,可以包含其他组件并提供滚动条。当组件内容过大...
- **JTable**: 用于展示二维数据的表格,可以编辑和排序。 - **JTree**: 展示层次结构数据的树形视图。 - **JTabbedPane**: 提供多个面板,每个面板作为一个选项卡显示。 - **JProgressBar**: 显示进度条,通常...
5. **表组件**:JTable用于展示二维数据,可以进行排序、选择和编辑;JList用于展示一维列表数据;JTree则用于显示层级结构的数据。 6. **对话框组件**:包括JOptionPane,它简化了警告对话框、确认对话框、输入...