Java Swing组件组织

Java Swing组件组织,java,swing,organization,Java,Swing,Organization,我想通过为每个组件创建一个类并根据需要继承来澄清我的Swing代码 // Inner classes private class Frame extends JFrame {} private class Panel extends JPanel {} private class Button extends JButton {} 虽然我不想过火,但我认为,从代码和组件组织策略来看,这可能有助于更轻松地阅读代码 这是一个很好的策略,允许将每个组件限制在一个类中并进行定制,还是最好将这些组件简单

我想通过为每个组件创建一个类并根据需要继承来澄清我的Swing代码

// Inner classes
private class Frame extends JFrame {}
private class Panel extends JPanel {}
private class Button extends JButton {}
虽然我不想过火,但我认为,从代码和组件组织策略来看,这可能有助于更轻松地阅读代码

这是一个很好的策略,允许将每个组件限制在一个类中并进行定制,还是最好将这些组件简单地定义为一个类的局部变量

当创建从Swing组件继承的类时,我注意到它干净地分隔了组件,并有助于更好地阅读,但我不确定这是否是一种好方法。我确实在继承JButton时遇到了问题,因此无法设置名称

// Inner classes
private Panel extends JPanel { public Panel() { add(new Button("A Button")) } } 
private Button extends JButton { public Button(String name) { setName(name) } }

扩展一个组件,仅仅是为了改进它当前的特性,显然是一种不好的做法和错误的选择。总是喜欢组合而不是继承。仅当要将某些内容添加到其已指定的功能时才继承。如果您只是按原样使用它们,请将它们定义为本地:-此外,对自定义按钮使用正名,以便其他程序员不会将其与java.awt.button混淆,因为它是您自己的自定义按钮根据@nIcEcOw的明智建议,我会添加这些非常混淆的名称,我注意到,每一行代码都有AWT等价物。我注意到它干净地分隔了组件,有助于更好地阅读——试图在一行代码上编写代码并不会有助于更好地阅读。一致使用空格和代码缩进有助于更好地阅读。@nIcEcOw我仍然可以使用类来分隔GUI的区域或组以进行合成,除非扩展功能正确,否则不必费心继承?@Mushy:Ejaaaaaactly:-尝试制作类似Swing已经在使用的东西,这样你们就可以开始了。但一定要记住,因为这会降低性能。尽管关注点分离有助于可管理性和可维护性,因此需要良好的平衡。然而,找到正确的平衡始终是一项具有挑战性的任务:-