是否可以在Java Swing中一次启用所有文本字段?

时间:2012-10-13 23:31:57

标签: java swing jtextfield disabled-control

我有多个文本字段,我需要使用Java Swing一次启用或禁用。 这可能吗?

3 个答案:

答案 0 :(得分:6)

如果所有JTextFields都在一个容器上,您可以执行以下操作:

for (Component c : container.getComponents()) {
   if (c instanceof JTextField) {
      c.setEnabled(false);
   }
}

答案 1 :(得分:2)

如果你把它们全部放在一个链表/数组列表中,你可以有一个方法来循环它并启用/禁用。这可能是最简单的方法

答案 2 :(得分:2)

很难维护所有组件的全局列表并迭代所有引用。假设您需要通知所有文本字段以启用或禁用,而不会破坏系统的松散耦合性质(我假设您有兴趣保持应用程序的可维护性。)

我的建议是:

  1. 子类JTextField
  2. 开始使用EventBus来减少耦合(你可以从任何实现开始,this one很简单)
  3. 在您的JTextField子类中订阅以接收 change_state 事件
  4. 使用您想要启用/禁用支持的自己的JTextField whenewer
  5. 从应用程序的任何部分生成 change_state 事件
  6. 请注意,将会(应该)只有两个与所请求功能相关的地方:

    • 事件触发(可以是按钮动作侦听器)
    • 事件处理(JTextField子类)

    不要在您的应用程序上传播事件处理逻辑。快乐的编码。