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

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM