JTable基于隐藏列的排序

JTable基于隐藏列的排序,第1张

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);    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5427216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存