5

我在 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 个文本字段重复此代码,这让我很不高兴。这是我们唯一的方法吗?或者有人可以建议我更好的方法吗?

4

1 回答 1

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

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

于 2012-10-16T08:33:52.617 回答