繁体   English   中英

是否有一种更有效的方法来处理按钮单击事件而不是几个if语句?

[英]Is there a more efficient way to handle button click events than several if statements?

所以,我会尽力解释这个问题......

基本上,我有一个GUI,其主窗口上有几个按钮(可能大约10个)。 我将按钮本身放在一个数组中,但是当涉及到处理每个按钮的点击事件时,根据点击哪一个,会发生不同的事情。

而不是做这样的事情:

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("Button1Text") { /* do stuff */ }
    else if(e.getActionCommand().equals("Button2Text") { /* do stuff */ }
    else if(e.getActionCommand().equals("Button3Text") { /* do stuff */ }
    else if(e.getActionCommand().equals("Button4Text") { /* do stuff */ }
}

点击时是否有更有效的方法来处理每个按钮的响应? 我们的想法是,无论何时点击一个按钮,都会打开一个新窗口,让用户执行与该按钮相关的各种任务。 我想以某种方式将getActionCommand()Class.forName() / newInstance()方法结合使用,但我不确定是否还有其他(或更简单)方法可以执行此类操作。

您显示的ActionListener有时被称为“交换机监听器”,您认为可以对其进行改进是正确的。 这是非常严格的代码,使得调试和增强变得困难。

我认为最好不要让GUI实现ActionListener,而是为每个按钮使用独特的Actions(即AbstractActions),然后将相应的Action插入相应的按钮。 要使用最小耦合进行插入,请考虑使用依赖注入Spring或Guice。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM