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

JTable基于隐藏列的排序

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

JTable基于隐藏列的排序

您可以默认将TableRowSorter添加到JTable中,但是有RowSorter,没有什么比Darryl的Multisort
Table Header Cell
Renderer

更好,更清晰了

note注意RowSorter的定义仅对具体的TableColumn有效

简单示例(再次使用无用的爆炸)

import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;public class HeaderDoubleclickTest {    private String[] columnNames = {"String", "Integer", "Boolean"};    private Object[][] data = {        {"aaa", 12, true}, {"bbb", 5, false},        {"CCC", 92, true}, {"DDD", 0, false}    };    private TableModel model = new DefaultTableModel(data, columnNames) {        private static final long serialVersionUID = 1L;        @Override        public Class<?> getColumnClass(int column) { return getValueAt(0, column).getClass();        }    };    private JTable table = new JTable(model);    private JTableHeader header;    static class TestTableRowSorter extends TableRowSorter<TableModel> {        TestTableRowSorter(TableModel m) { super(m);        }        @Override        public void toggleSortOrder(int column) {        }        public void wrapToggleSortOrder(int column) { super.toggleSortOrder(column);        }    }    private Timer timer = new Timer(400, new ActionListener() {        @Override        public void actionPerformed(ActionEvent e) { System.out.println("single"); JTable table = header.getTable(); RowSorter sorter; if (pt != null && table != null && (sorter = table.getRowSorter()) != null) {     int columnIndex = header.columnAtPoint(pt);     if (columnIndex != -1) {         columnIndex = table.convertColumnIndexToModel(columnIndex);         ((TestTableRowSorter) sorter).wrapToggleSortOrder(columnIndex);     } }        }    });    private Point pt;    public JComponent makeUI() {        timer.setRepeats(false);        table.setRowSorter(new TestTableRowSorter(model));        header = table.getTableHeader();        header.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(final MouseEvent e) {     if (timer.isRunning() && !e.isConsumed() && e.getClickCount() > 1) {         System.out.println("double");         pt = null;         timer.stop();     } else {         pt = e.getPoint();         timer.restart();     } }        });        JPanel p = new JPanel(new BorderLayout());        p.add(new JScrollPane(table));        return p;    }    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() { @Override public void run() {     createAndShowGUI(); }        });    }    public static void createAndShowGUI() {        Jframe f = new Jframe();        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);        f.getContentPane().add(new HeaderDoubleclickTest().makeUI());        f.setSize(320, 240);        f.setLocationRelativeTo(null);        f.setVisible(true);    }}


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

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

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