是否可以在 Swing 中将单个文档侦听器用于多个文本字段



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

例:假设说,我在它们上方有 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 个文本字段重复此代码,我并不真正满意。这是我们唯一的办法吗?或者有人可以建议我更好的方法吗?

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

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

最新更新