您的位置:首页 > 其它

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

2011-09-28 14:59 519 查看


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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: