Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java容器类,我应该使用所有组件作为字段还是只在构造函数中创建它们_Java_Components_Containers - Fatal编程技术网

Java容器类,我应该使用所有组件作为字段还是只在构造函数中创建它们

Java容器类,我应该使用所有组件作为字段还是只在构造函数中创建它们,java,components,containers,Java,Components,Containers,哪种方法更好:假设我有一个扩展容器实例的类,我想向其中添加组件,我应该将组件用作字段还是在构造函数中创建它们?请详细说明。通常,如果添加组件后不需要触摸组件,请使用构造函数方法;如果需要访问它们,例如,使用mouseListener更改JPanel的颜色,则使用一个字段。好的,我明白了,尽管我不明白为什么在示例中您提供了需要访问面板的权限?如果面板上有鼠标侦听器,您可以使用e.getSource()访问它不?是的,您是对的。假设我们使用ActionListener和JButton来更改颜色;e、

哪种方法更好:假设我有一个扩展容器实例的类,我想向其中添加组件,我应该将组件用作字段还是在构造函数中创建它们?

请详细说明。通常,如果添加组件后不需要触摸组件,请使用构造函数方法;如果需要访问它们,例如,使用
mouseListener
更改
JPanel
的颜色,则使用一个字段。好的,我明白了,尽管我不明白为什么在示例中您提供了需要访问面板的权限?如果面板上有鼠标侦听器,您可以使用e.getSource()访问它不?是的,您是对的。假设我们使用ActionListener和JButton来更改颜色;e、 getSource()将返回按钮,我们无法更改JPanel的颜色,除非它存储在变量中。当您知道要触摸组件,但不确定是否可以通过e.getSource()或其他类似方式访问组件时,可以使用字段。好的,谢谢您的解释;)我们之所以使用构造函数方法,是因为内存方面的原因?不是真的;与java的工作方式相比,变量没有太大的开销,但保持对象的活动性确实如此。Java使对象在使用期间保持活动状态(变量、字段或对象包含其副本)。有时候,拥有你不需要的字段是没有意义的。此外,它使代码更具可读性。正如俗话所说,当你再也不能移除任何东西时,完美就会实现。