Java Swing实现展示数据,以及过滤排序

Posted 冬瓜茶饮料

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Swing实现展示数据,以及过滤排序相关的知识,希望对你有一定的参考价值。


public class RelationCostctrTable extends DefaultTableModel {

    public RelationCostctrTable(Vector<Vector<String>> tableValues, Vector<String> columnNames) {
        super(tableValues, columnNames);
    }
    
    @Override
    public boolean isCellEditable(int row, int column) {
        
        return false;
    }
    
}
public class JtableDemo4 extends JFrame {
    JtableDemoTbale2 defaultTableModel;
    /**
     * 取消按钮
     */
    private JButton cancelBtn;
    // 选中行索引
    int selectedRow;
    
    public static void main(String[] args) {
        JtableDemo4 demo = new JtableDemo4();
        demo.setVisible(true);
    }

    public JtableDemo4() {
        this.setTitle("进项发票关联成本合同");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(700, 450);
        // JFrame窗体居中
        this.setLocationRelativeTo(null);
        String src = "/image/logo.png"; // 图片路径
        Image image = null;
        try {
            image = ImageIO.read(this.getClass().getResource(src));
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 创建图片对象
        this.setIconImage(image); // 设置图标
        final JScrollPane scrollPane = new JScrollPane();
        this.getContentPane().add(scrollPane, BorderLayout.CENTER);
        // 设置JTable中的列名
        Vector<String> columnNames = new Vector<String>();
        columnNames.add("组织");
        columnNames.add("合同编码");
        columnNames.add("合同主键");
        Vector<Vector<String>> tableValues = new Vector<Vector<String>>();
        for (int row = 1; row < 29; row++) {
            Vector<String> rowV = new Vector<String>();
            rowV.add("A" + row);
            rowV.add("B" + row);
            rowV.add("C" + row);
            tableValues.add(rowV);
        }
        // 创建JTable (表格)
        final JTable table = new JTable();
        // 创建表格模型
        defaultTableModel = new JtableDemoTbale2(tableValues, columnNames);

        final TableRowSorter<JtableDemoTbale2> sorter = new TableRowSorter<JtableDemoTbale2>(
                defaultTableModel);
        table.setRowSorter(sorter);
        
        // 设置JTable的表格模型
        table.setModel(defaultTableModel);
        table.getTableHeader().setReorderingAllowed(false);
        /*
         * 将JTable添加到JScrollPane中,
         */
        scrollPane.setViewportView(table);
        // 设置表格的选择模式---为单选模式
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        final JPanel panel = new JPanel();
        panel.setBackground(Color.gray);
        this.getContentPane().add(panel, BorderLayout.SOUTH);
        final JTextField filterText = new JTextField(20);
        JButton gl = new JButton("过滤");
        JButton glcbht = new JButton("关联成本合同");
        panel.add(filterText);
        panel.add(gl);
        panel.add(glcbht);
        /**
         * 点击JScrollPane滚动面板,取消选中的行
         */
        scrollPane.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                // 取消掉选中行,但是选中行的索引值还是在的,没有取消掉
                table.clearSelection();
                // 显示选中行的索引值。
                System.out.println("-----------------" + selectedRow);
            }
        });
        gl.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String text = filterText.getText();
                if (text.length() == 0) {
                    sorter.setRowFilter(null);
                } else {
                    sorter.setRowFilter(RowFilter.regexFilter(text));
                }
            }
        });

        glcbht.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 获取到JTable中选定行的---索引值
                selectedRow = table.getSelectedRow();
                // 获取到指定单元格的值
                if(selectedRow < 0)
                    return;
                int i = table.convertRowIndexToModel(table.getSelectedRow());
                Object oa = defaultTableModel.getValueAt(i, 0);
                Object ob = defaultTableModel.getValueAt(i, 1);
                Object oc = defaultTableModel.getValueAt(i, 2);
                int row = selectedRow+1;
                System.out.println("第" + row + "行," + "内容:" + oa + " "
                        + ob + " " + oc);
            }
        });
    }

}

 

以上是关于Java Swing实现展示数据,以及过滤排序的主要内容,如果未能解决你的问题,请参考以下文章

Java集合与数据结构——七大排序算法的实现

Java+Swing实现通讯录管理系统

Eclipse+Java+Swing+Mysql实现员工信息管理系统

Java+Swing实现五子棋游戏

Eclipse+Java+Swing+Mysql实现学生信息管理系统

Eclipse+Java+Swing+Mysql实现自助存取款机(ATM)系统