编程语言
首页 > 编程语言> > java – 将GUI组件声明为字段是否有特定原因? ActionListener也应该匿名吗?

java – 将GUI组件声明为字段是否有特定原因? ActionListener也应该匿名吗?

作者:互联网

有几个关于如何制作简单GUI的例子.我的问题是什么被认为是这样做的正确方法,这样做的理由是什么?

我一直在Eclipse下使用Window Builder Pro,并检查正在生成的代码.显然,Window Builder更喜欢在视觉类的main方法中将组件(按钮等)声明为局部变量.但是,Window Builder中有一个按钮允许转换为字段.我遇到的大多数例子似乎都更喜欢现场声明.

此外,许多示例表明,最好创建一个扩展JFrame的单独类. Window Builder只是将JFrame声明为类中的一个字段.

我是否应该为许多事件或多个处理程序提供单个处理程序. Window Builder为每个事件声明匿名处理程序.

我只想清楚首选方法是什么.

解决方法:

Is there a specific reason to declare GUI components as fields?

我要说你只需要在你的程序中的某个地方引用那个组件就可以了.例如,对于大多数花园种类的JLabel来说通常不是这种情况,因此这些可能是在使用现场最佳声明和使用的.但是,许多JButton和JTextComponents需要在别处使用,这些可能最好被声明为私有类字段.

Also should ActionListener be anonymous?

只有这样才有意义.为了澄清,许多/最快速的一次性ActionListener应该是匿名的,但是较大的应该是私有内部类,而复杂的较大的应该是独立的独立类.我知道除了感觉和体验之外,没有简单的测试来区分这些.

I have been using Window Builder Pro under Eclipse, and examining the code that is being generated…

如果你是一个学徒Swing编码器,你可能想要把这个工具放在一边,直到你非常熟悉创建Swing GUI,因为如果你不熟悉它,GUI构建器可能会很难使用底层图书馆.否则,如果你是一个熟练工,当然如果你是一个专业的Swing程序员,那么请确保继续使用它.

Also many examples show that it is better to create a separate class that extends JFrame. Window Builder just declares JFrame as a field in the class.

我所知道的Swing领域的大多数专家建议通常最好不要扩展JFrame,而是在需要时创建和使用JFrame对象.这有几个原因,但第一是避免意外的副作用,例如在没有意识到的情况下覆盖关键方法.当我重写了一个JComponent并将其赋予int getX()和int getY()方法时,这种情况发生在我身上.该组件永远不会停留在它应该位于的位置!

Also should I have a single handler for many events or multiple handlers. Window Builder declares anonymous handlers for each event.

我认识的大多数人使用单个处理程序来处理单一类型的操作.例如,如果你正在创建一个计算器,那么创建一个由所有数字按钮共享的单个处理程序是有意义的,对于不同类型的操作可能有几个:一个基本数学运算的处理程序,如, – , *,/,一个用于内存操作,一个用于更复杂的操作.

标签:actionlistener,windowbuilder,java,swing,jframe
来源: https://codeday.me/bug/20190725/1537157.html