是否可以在Swing中为多个文本字段提供单个文档侦听器

Ama*_*ath 5 java swing jtable listener jtextfield

我在JTable上有12个12列过滤器.每个过滤器都是JTextField类型的TextField.每次用户在文本框过滤器中输入数据时,都会进行搜索.

示例: 假设我说它上面有3列和3个文本框作为过滤器.现在,任何在我的表过滤必须发生的任何文本框中键入的内容都会发生.它发生得很好.

???????????????????????????????????????????
? [TextField] ? [TextField] ? [TextField] ?
???????????????????????????????????????????
?             ?             ?             ?
???????????????????????????????????????????
      ...           ...           ...
???????????????????????????????????????????
?             ?             ?             ?
???????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

每个文本字段的文本字段侦听器如下所示,

textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) { method(); } 
  public void removeUpdate(DocumentEvent e) { method(); }
  public void insertUpdate(DocumentEvent e) { method(); } 
};
Run Code Online (Sandbox Code Playgroud)

我的问题是,我正在为所有12个文本字段重复此代码,我并不高兴.这是我们唯一的方式吗?或者有人可以建议我一个更好的方法?

Rob*_*bin 8

  • 从匿名类切换到内部类,并将相同的侦听器附加到每个字段.源包含在事件中
  • 使其成为一个单独的类,并继续为每个字段使用单独的侦听器.至少避免代码重复

有关内部类的示例,请参阅本教程

  • 您仍然可以使用匿名类来执行此操作:`DocumentListener listener = new DocumentListener(){...}; for(JTextField textfield:fields){textField.getDocument().addDocumentListener(listener); }` (2认同)