在JAVA中,处理事件的正确方法是什么?

4

程序员在JAVA中处理事件的正确方式是什么?问题是,在Eclipse的设计视图中双击按钮自动生成代码是否可以接受?

btn_add_game.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

MY CODE TO EXECUTE;
            }
        });

需要编写实现动作监听器的类并编写代码吗?

另外,同一主题,使用Eclipse的设计视图正常吗?还是只有硬核程序员才使用代码?

3个回答

1
您所写的完全没问题。它是一个匿名内部类,我认为拥有这些并不是一种代码异味。
想象一下,如果您将所有监听器实现为单独的类。你最终会得到大量的类,它们本质上是匿名函数(像其他语言中的lambda)。
所以,请放心使用生成的监听器。
您的另一个问题是一个信仰问题。一半的程序员会说不要使用它,另一半会告诉你使用它。这完全取决于个人喜好。如果设计师生成高质量的代码,则使用它,否则不要使用。

在某种程度上,我认为他的第一个问题也是一个宗教问题,特别是在今天可用的IDE。我个人建议在大多数情况下使用单独的类来处理监听器,但这只是个人意见。我在工作中曾经就这个问题进行过辩论。 - Laf

1
这完全取决于你公司的政策以及你想将代码分成多少个逻辑单元。你在问题中提供的代码是可以的,它可以让你处理事件。
然而,我通常更喜欢使用一个单独的类,该类扩展我需要的监听器接口,而不是使用一堆匿名内部类。这会产生更清晰的代码(在我看来),并且使维护或添加新功能变得更容易。但请记住,这只是我的意见(Adam发布了一个完全有效的回答,与我的意见相反)。
就编写GUI而言,我从不使用GUI构建器,我发现我对GUI组件、布局和行为缺乏控制。我总是手动编写代码,使用适当的LayoutManager或管理器组合。但是,如果您的用户界面足够简单,并且您不想花时间学习如何在Java中处理GUI,则使用构建器是一个完全有效的选项。

@AdamArold 很好的发现。向我的法裔加拿大遗产致敬 :P 谢谢你注意到了 ;) - Laf

1
这取决于您的需求。
1. 如果只有一个操作,可以直接使用,就像您在问题中展示的那样。 2. 如果有多个操作,则应实现ActionListener以进行维护并减少样板代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接