所以,我会尽力解释这个问题...
基本上,我有一个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插入适当的按钮。要以最小的耦合插入,请考虑使用依赖注入la Spring或Guice。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句