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实现展示数据,以及过滤排序的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse+Java+Swing+Mysql实现员工信息管理系统