java - 所有组件的一个 Listener 实例 每个组件一个实例

标签 java swing

简短问题

我想知道是否有任何关于为所有组件编写一个监听器实例或为每个组件编写一个实例的良好实践建议。

扩展问题

我正在开发一个 java swing 应用程序。

以相同的形式,我可以有十几个使用相同监听器类的组件(它们之间没有关系)。我在每个听众自己的类(class)中写下他们的内容。

监听器用于对组件上引入的数据进行一些验证。

我应该为每个组件创建一个监听器类的实例,还是应该为所有组件使用相同的监听器实例。

我找不到任何关于此的好的实践建议,除了this comment ,这并不指向任何引用。

最佳答案

对于 ActionListener 的特定情况,使用 Action 封装所需的功能。 。广use这个类在整个 Swing 中都表明了它的值(value)。这个简单example说明了一些内置文本组件操作;这个更详细example显示如何在菜单和工具栏之间共享操作。

替代方案是基于事件源的不断增长且难以维护的 if-then-else 梯子。

附录:啊,我误读了你的问题。 @安德鲁的comment是关于;您的问题涉及实例。对于前者,单个听众往往会演变为 known anti-pattern ; example 的早期版本引用很能说明问题。对于后者,仅使用所需数量的实例;我通常会在分析器中发现最严重的违规行为。

关于java - 所有组件的一个 Listener 实例 每个组件一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12252106/

相关文章:

java - 我的自定义组件无法绘制

java - 如何使 Swing 文本区域在加载后立即获得焦点?

java - 字符串插入时出现循环问题

java - 使用 session ID 连接到当前的 selenium 浏览器窗口

java - 为 spring-boot redis 缓存配置配置一个新的序列化器

java - 使 ffmpeg/javacv 在 Java 中不那么冗长

java - 重复矩形而不是移动动画

swing - Java SE 二进制崩溃

java - org.openqa.selenium.NoSuchElementException : Unable to locate element error while locating an element to extract the text using Selenium and Java

当我取消 SwingWorker 时,Java SwingWorker 套接字服务器不会被取消