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

时间:2012-10-16 08:31:14

标签: java swing jtable listener jtextfield

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

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

╔═════════════╦═════════════╦═════════════╗
║ [TextField] ║ [TextField] ║ [TextField] ║
╠═════════════╬═════════════╬═════════════╣
║             ║             ║             ║
╠═════════════╬═════════════╬═════════════╣
      ...           ...           ...
╠═════════════╬═════════════╬═════════════╣
║             ║             ║             ║
╚═════════════╩═════════════╩═════════════╝

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

textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) { method(); } 
  public void removeUpdate(DocumentEvent e) { method(); }
  public void insertUpdate(DocumentEvent e) { method(); } 
};

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

1 个答案:

答案 0 :(得分:8)

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

有关内部类的示例,请参阅this tutorial