我需要这样做:将值更改侦听器更改为JTextField
我想Condemwnci的解决方案,但我得到的是错误的路线: textField.getDocument().addDocumentListener(new DocumentListener() 在我的情况是: jtxtfBuscarInv.getDocument().addDocumentListener(new DocumentListener()
textField.getDocument().addDocumentListener(new DocumentListener()
jtxtfBuscarInv.getDocument().addDocumentListener(new DocumentListener()
就我而言,我想更新Jtable中的行,所以我的方法将是这样的: ordenador.setRowFilter(RowFilter.regexFilter(jtxtfBuscarInv.getText(), 0));
ordenador.setRowFilter(RowFilter.regexFilter(jtxtfBuscarInv.getText(), 0));
我在Linux ubuntu 11.10上使用Eclipse(如果有的话)。
编辑:
我不明白为什么,但是它可以通过以下方式工作:
textField.getDocument().addDocumentListener(this);
然后改写Implements方法,而不是全部在同一行中完成。
两种添加a的方法DocumentListener应该有效地相同。下面的示例列出了每个事件的 所有 类型的侦听器DocumentListener.class。最明显的一个是DocumentListeners它本身,而 匿名内部类 具有(依赖于实现)的名称DocumentListeners$1。两者都实现DocumentListener接口。其他是典型的文本组件维护的一部分。请注意,显示了 两个 副本,其中每个侦听器都添加了一个副本。
DocumentListener
DocumentListener.class
DocumentListeners
DocumentListeners$1
安慰:
javax.swing.text.JTextComponent$InputMethodRequestsHandler@5090d8ea DocumentListeners $ 1 @ 559113f8 DocumentListeners [,0,0,128x38,layout = java.awt.FlowLayout,alignmentX = 0.0,alignmentY = 0.0,border =,flags = 9,maximumSize =,minimumSize =,preferredSize =] javax.swing.plaf.basic.BasicTextUI$UpdateHandler@27b62aab javax.swing.text.DefaultCaret$Handler@28ab54eb javax.swing.text.JTextComponent$InputMethodRequestsHandler@5090d8ea DocumentListeners $ 1 @ 559113f8 DocumentListeners [,0,0,128x38,layout = java.awt.FlowLayout,alignmentX = 0.0,alignmentY = 0.0,border =,flags = 9,maximumSize =,minimumSize =,preferredSize =] javax.swing.plaf.basic.BasicTextUI$UpdateHandler@27b62aab javax.swing.text.DefaultCaret$Handler@28ab54eb
码:
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.AbstractDocument; /** @see http://stackoverflow.com/questions/8283067 */ public class DocumentListeners extends JPanel implements DocumentListener { JTextField jtf = new JTextField("StackOverflow!"); public DocumentListeners() { this.add(jtf); jtf.getDocument().addDocumentListener(this); jtf.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { print(e); } @Override public void removeUpdate(DocumentEvent e) { print(e); } @Override public void changedUpdate(DocumentEvent e) { print(e); } }); } private void print(DocumentEvent e) { AbstractDocument ad = (AbstractDocument) jtf.getDocument(); for (DocumentListener dl : ad.getListeners(DocumentListener.class)) { System.out.println(dl); } } @Override public void insertUpdate(DocumentEvent e) { print(e); } @Override public void removeUpdate(DocumentEvent e) { print(e); } @Override public void changedUpdate(DocumentEvent e) { print(e); } private void display() { JFrame f = new JFrame("DocumentListeners"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new DocumentListeners().display(); } }); } }