📄 tablesorterimpl.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package sortTable;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import javax.swing.table.TableModel;/** * * @author Administrator */public class TableSorterImpl implements TableSorter { private List indexList; protected TableModel model; protected Comparator comparator; public TableSorterImpl(TableModel model,Comparator comparator){ this(); this.model = model; this.comparator = comparator; } public TableSorterImpl(){ indexList = new ArrayList(); } public Comparator getComparator() { return comparator; } public void setComparator(Comparator comparator) { this.comparator = comparator; } public TableModel getModel() { return model; } public void setModel(TableModel model) { this.model = model; } public void sort(int viewColumn) { if(comparator == null){ throw new RuntimeException("Comparator can not be null!"); } initIndexList(viewColumn); Collections.sort(indexList,comparator); //把排序信息更新到table changeRowIndex(indexList); } private void initIndexList(int col) { indexList.clear(); for (int i = 0; i < model.getRowCount(); i++) { indexList.add(new IndexCell(i, model.getValueAt(i, col))); } } public void changeRowIndex(List indexList) { Object[][] backup = new Object[model.getRowCount()][model.getColumnCount()]; for (int row = 0; row < backup.length; row++) { for (int col = 0; col < backup[row].length; col++) { backup[row][col] = model.getValueAt(row, col); } } Object[] indexArray = indexList.toArray(); for (int row = 0; row < model.getRowCount(); row++) { int oldRowId = ((IndexCell) indexArray[row]).getRowIndex(); for (int col = 0; col < model.getColumnCount(); col++) { model.setValueAt(backup[oldRowId][col], row, col); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -