下面演示怎么動態過濾表格顯示的內容
?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(300,?250);
63?????????????????frame.setVisible(true);
64?????????????}
65?????????};
66?????????EventQueue.invokeLater(runner);
67?????}
68?}
69?
效果不錯吧,不過我還是喜歡swt多一點

posted on 2007-05-14 11:09
交口稱贊 閱讀(1315)
評論(3) 編輯 收藏 所屬分類:
Java6