您正在呼叫
RowFilter.regexFilter(filterTF.getText(), 0);的
UserPage_Admin()
构造。它应该如何从filterTF中读取 文本 。我认为您应该从分配给的Action Event
Listener调用它
JButton,提交(单击)文本时将调用它,如下所示:
submitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String text = filterText.getText(); if (text.length() == 0) { sorter.setRowFilter(null); } else { sorter.setRowFilter(RowFilter.regexFilter(text, 0)); } } });如果要使用“根据用户键类型进行过滤”事件,请将键侦听器添加到您要输入过滤字符串的文本字段中。
filterTxtFeild.addKeyListener(new KeyAdapter() { public void keykeyReleased(KeyEvent evt) { // on each key type event filter. // put your filter pre as submit button } });但是,正如下面的注释所建议的那样,要使用Swing Text Component,应使用document.adddocumentListener(documentListener)
。Swing文本组件使用文档来表示其内容。文档内容以任何方式更改时,都会发生文档事件。如下添加文档侦听器:
filterTxtFeild.getdocument().adddocumentListener(new documentListener() { @Override public void insertUpdate(documentEvent e) { // put your filter pre here upon data insertion } @Override public void removeUpdate(documentEvent e) { //put your filter pre here upon data removal } @Override public void changedUpdate(documentEvent e) {} });编辑:为什么最好用documentListener?
如果我们要验证数据源中的输入,
KeyEvent在过滤数据时使用,您会发现它不能反映用户的击键,并且输入事件在由数据源处理之前先发送给侦听器。假设当我们要
username输入时,某人输入了类似的文本
"$%^&"。对于此类无效输入,
KeyEvent即使未对数据源进行任何有效更改,仍将被触发。但是,
documentListeners仅在对数据源进行了有效更改时才收到通知。数据输入组件会产生一个事件,其中一个
validator可以监听
asynchronously,一个人绝对不能从一个组件内修改文本组件的内容
documentListener。如果这样做,程序可能会死锁。



