14.64.3 行过滤及排序键 Table row filer and sort key

本文介绍了一个使用Java Swing构建的简易表格过滤器示例。该示例通过JTable展示数据,并利用TableRowSorter进行实时过滤。用户可通过文本框输入过滤条件,快速筛选表格中的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.RowFilter; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; public class NewFilterTable extends JFrame{ public NewFilterTable(){ setDefaultCloseOperation(EXIT_ON_CLOSE); String[] columns = { "ID", "Des", "Date", "Fixed" }; Object[][] rows = { { 1, "C", new Date(), new Date() }, { 2, "G", new Date(), new Date() }, { 5, "F", new Date(), new Date() } }; TableModel model = new DefaultTableModel(rows, columns);//设置模型 JTable table = new JTable(model);//把模型装入表格table ////RowSorter 的一个实现,它使用 TableModel 提供排序和过滤操作。 final TableRowSorter<TableModel> sorter;//定义一个过滤器 sorter = new TableRowSorter<TableModel>(model);//这个过滤器来过滤 model table.setRowSorter(sorter); getContentPane().add(new JScrollPane(table));//把表装入frame中 JPanel pnl = new JPanel();//定义一个panel面板 pnl.add(new JLabel("过滤器:"));//在面板上加入标签 final JTextField txtFE = new JTextField(25);//定义一个25的文本框 pnl.add(txtFE);//把文本框装入面板 JButton btnSetFE = new JButton("Set Filter Expression");//新增一个按钮 ActionListener al;//定义一个监听器 al = new ActionListener(){ /** * setSortKeys()设置排序键。 * sortKeys - 新的 SortKey;null 是指定一个空列表的简单表示方法,表示视图应该是未排序的。 */ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String expr = txtFE.getText(); sorter.setRowFilter(RowFilter.regexFilter(expr)); sorter.setSortKeys(null); } }; btnSetFE.addActionListener(al); pnl.add(btnSetFE); getContentPane().add(pnl, BorderLayout.SOUTH); setSize(750, 150); setVisible(true); } public static void main(String[] args) { new NewFilterTable(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值