随笔 - 119  文章 - 3173  trackbacks - 0
<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

交友莫独酒,茅台西凤游。
口干古井贡,心徜洋河流。
称多情杜康,趟无量双沟。
赞中华巍巍,无此不销愁。

常用链接

留言簿(68)

随笔分类(136)

随笔档案(122)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 522470
  • 排名 - 94

最新评论

下面演示怎么动态过滤表格显示的内容
 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(String args[]) {
 9         Runnable runner = new Runnable() {
10             public void run() {
11                 JFrame frame = new JFrame("Sorting JTable");
12                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13                 Object rows[][] = { 
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                 String columns[] = { "英文测试""多语言测试""数字测试" };
22                 TableModel model = new DefaultTableModel(rows, columns) {
23                     public Class getColumnClass(int column) {
24                         Class returnValue;
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                 JTable table = new JTable(model);
34                 final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(
35                         model);
36                 table.setRowSorter(sorter);
37                 JScrollPane pane = new JScrollPane(table);
38                 frame.add(pane, BorderLayout.CENTER);
39                 JPanel panel = new JPanel(new BorderLayout());
40                 JLabel label = new JLabel("Filter");
41                 panel.add(label, BorderLayout.WEST);
42                 final JTextField filterText = new JTextField();
43                 filterText.addKeyListener(new KeyAdapter() {
44                     public void keyReleased(KeyEvent e) {
45                         String text = filterText.getText();
46                         if (text.length() == 0) {
47                             sorter.setRowFilter(null);
48                         } else {
49                             try {
50                                 sorter.setRowFilter(RowFilter
51                                                 .regexFilter(text));
52                             } catch (PatternSyntaxException pse) {
53                                 System.err.println("Bad regex pattern");
54                             }
55                         }
56                     }
57                 });
58 
59                 panel.add(filterText, BorderLayout.CENTER);
60                 frame.add(panel, BorderLayout.NORTH);
61 
62                 frame.setSize(300250);
63                 frame.setVisible(true);
64             }
65         };
66         EventQueue.invokeLater(runner);
67     }
68 }
69 

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


sort.jpg
posted on 2007-05-14 11:09 交口称赞 阅读(1308) 评论(3)  编辑  收藏 所属分类: Java6

FeedBack:
# re: 学习Java6(九)Table(2)过滤表格[未登录] 2007-05-15 09:19 wzjin
挺好的!谢谢!  回复  更多评论
  
# re: 学习Java6(九)Table(2)过滤表格 2007-05-30 09:18 子敬
很好很好啊  回复  更多评论
  
# re: 学习Java6(九)Table(2)过滤表格 2007-05-30 12:25 交口称赞
呵呵
大家好才是真的好  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问