栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在jTable中实现搜索文本字段

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在jTable中实现搜索文本字段

  • JTable教程中有关过滤和排序的少量修改代码

  • 为了过滤JCheckBox,可以输入“ true” /“ false”

import java.awt.*;import java.util.regex.PatternSyntaxException;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;public class TableFilterSorter extends JPanel {    private boolean DEBUG = false;    private static final long serialVersionUID = 1L;    public TableFilterSorter() {        super(new BorderLayout(5, 5));        final JTextField filterCpText = new JTextField();        filterCpText.setFont(new Font("Serif", Font.BOLD, 28));        filterCpText.setForeground(Color.BLUE);        filterCpText.setBackground(Color.LIGHT_GRAY);        JPanel filterCpPanel = new JPanel();        filterCpPanel.setLayout(new BorderLayout(5, 5));        filterCpPanel.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));        filterCpPanel.setBackground(Color.LIGHT_GRAY);        filterCpPanel.setPreferredSize(new Dimension(300, 30));        filterCpPanel.add(filterCpText, BorderLayout.CENTER);        add(filterCpPanel, BorderLayout.NORTH);        final JTable table = new JTable(new MyTableModel());        table.setPreferredScrollableViewportSize(new Dimension(500, 160));        table.setFillsViewportHeight(true);        JScrollPane scrollPane = new JScrollPane(table);        add(scrollPane, BorderLayout.CENTER);        TableModel myTableModel = table.getModel();        final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(myTableModel);        table.setRowSorter(sorter);        filterCpText.getdocument().adddocumentListener(new documentListener() { private void searchFieldChangedUpdate(documentEvent evt) {     String text = filterCpText.getText();     if (text.length() == 0) {         sorter.setRowFilter(null);         table.clearSelection();     } else {         try {  sorter.setRowFilter(RowFilter.regexFilter("(?i)" + text, 4));  table.clearSelection();         } catch (PatternSyntaxException pse) {  JOptionPane.showMessageDialog(null, "Bad regex pattern",          "Bad regex pattern", JOptionPane.ERROR_MESSAGE);         }     } } @Override public void insertUpdate(documentEvent evt) {     searchFieldChangedUpdate(evt); } @Override public void removeUpdate(documentEvent evt) {     searchFieldChangedUpdate(evt); } @Override public void changedUpdate(documentEvent evt) {     searchFieldChangedUpdate(evt); }        });    }    private class MyTableModel extends AbstractTableModel {        private static final long serialVersionUID = 1L;        private String[] columnNames = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"};        private Object[][] data = { {"Mary", "Campione", "Snowboarding", new Integer(5), false}, {"Alison", "Huml", "Rowing", new Integer(3), true}, {"Kathy", "Walrath", "Knitting", new Integer(2), false}, {"Sharon", "Zakhour", "Speed reading", new Integer(20), true}, {"Philip", "Milne", "Pool", new Integer(10), false}, {"Mary", "Campione", "Snowboarding", new Integer(5), false}, {"Alison", "Huml", "Rowing", new Integer(3), true}, {"Kathy", "Walrath", "Knitting", new Integer(2), false}, {"Sharon", "Zakhour", "Speed reading", new Integer(20), true}, {"Philip", "Milne", "Pool", new Integer(10), false},};        @Override        public int getColumnCount() { return columnNames.length;        }        @Override        public int getRowCount() { return data.length;        }        @Override        public String getColumnName(int col) { return columnNames[col];        }        @Override        public Object getValueAt(int row, int col) { return data[row][col];        }        @Override        public Class<?> getColumnClass(int c) { return getValueAt(0, c).getClass();        }        @Override        public boolean isCellEditable(int row, int col) { if (col < 2) {     return false; } else {     return true; }        }        @Override        public void setValueAt(Object value, int row, int col) { if (DEBUG) {     System.out.println("Setting value at " + row + "," + col  + " to " + value + " (an instance of " + value.getClass() + ")"); } data[row][col] = value; fireTableCellUpdated(row, col); if (DEBUG) {     System.out.println("New value of data:");     printDebugData(); }        }        private void printDebugData() { int numRows = getRowCount(); int numCols = getColumnCount(); for (int i = 0; i < numRows; i++) {     System.out.print("    row " + i + ":");     for (int j = 0; j < numCols; j++) {         System.out.print("  " + data[i][j]);     }     System.out.println(); } System.out.println("--------------------------");        }    }    private static void createAndShowGUI() {        Jframe frame = new Jframe("TableDemo");        frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        TableFilterSorter newContentPane = new TableFilterSorter();        newContentPane.setOpaque(true);        frame.setContentPane(newContentPane);        frame.setLocation(150, 150);        frame.pack();        frame.setVisible(true);    }    public static void main(String[] args) {        javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() {     createAndShowGUI(); }        });    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574397.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号