学习Java6(九)Table(2)过滤表格

下面演示怎么动态过滤表格显示的内容
1 import javax.swing. * ;
2 import javax.swing.table. * ;
3 import java.awt. * ;
4 import java.awt.event. * ;
5 import java.util.regex. * ;
6
7 public class FilterTable{
8 public static void main(Stringargs[]){
9 Runnablerunner = new Runnable(){
10 public void run(){
11 JFrameframe = new JFrame( " SortingJTable " );
12 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13 Objectrows[][] = {
14 { " Abc " , " " ,1d},
15 { " AAB " , " " ,2d},
16 { " ABC " , " このページを印刷 " , 3.14 },
17 { " BBB " , " hermit " , 3.14 },
18 { " BBC " , " 0 " , 1.3 },
19 { " AAA " , " !!! " , 93.02 }
20 };
21 Stringcolumns[] = { " 英文测试 " , " 多语言测试 " , " 数字测试 " };
22 TableModelmodel = new DefaultTableModel(rows,columns){
23 public ClassgetColumnClass( int column){
24 ClassreturnValue;
25 if ((column >= 0 ) && (column < getColumnCount())){
26 returnValue = getValueAt( 0 ,column).getClass();
27 } else {
28 returnValue = Object. class ;
29 }
30 return returnValue;
31 }
32 };
33 JTabletable = new JTable(model);
34 final TableRowSorter < TableModel > sorter = new TableRowSorter < TableModel > (
35 model);
36 table.setRowSorter(sorter);
37 JScrollPanepane = new JScrollPane(table);
38 frame.add(pane,BorderLayout.CENTER);
39 JPanelpanel = new JPanel( new BorderLayout());
40 JLabellabel = new JLabel( " Filter " );
41 panel.add(label,BorderLayout.WEST);
42 final JTextFieldfilterText = new JTextField();
43 filterText.addKeyListener( new KeyAdapter(){
44 public void keyReleased(KeyEvente){
45 Stringtext = filterText.getText();
46 if (text.length() == 0 ){
47 sorter.setRowFilter( null );
48 } else {
49 try {
50 sorter.setRowFilter(RowFilter
51 .regexFilter(text));
52 } catch (PatternSyntaxExceptionpse){
53 System.err.println( " Badregexpattern " );
54 }
55 }
56 }
57 });
58
59 panel.add(filterText,BorderLayout.CENTER);
60 frame.add(panel,BorderLayout.NORTH);
61
62 frame.setSize( 300 , 250 );
63 frame.setVisible( true );
64 }
65 };
66 EventQueue.invokeLater(runner);
67 }
68 }
69

效果不错吧,不过我还是喜欢swt多一点
sort2.jpg


sort.jpg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值