我了解到,使用JFrame
类显示的窗口是具有预定义功能(最小化,关闭)的Container
,但是我发现没有使用JFrame
类的人但是其他类(其中一个是Container
)则要困难得多。
他们为什么这样做?是因为JFrame
类始终具有预定义的窗口,您可以操纵它的某些方面,但是Container
和其他类为您提供更多创建窗口的自由?
在JFrame
类中,我的问题的一个示例(我不知道它的真实与否)总是将关闭按钮移到窗口的右角,但是如果我用其他方式这样做,可以把它放在您喜欢的任何地方。 (如果可以用是或否回答)。
答案 0 :(得分:1)
所以我很想问他们为什么要那样做
有两个“主要原因”。首先是关于整体良好的编程。
我们倾向于建议避免从没有添加任何新功能或可重复功能的类扩展。如果从JFrame
扩展的全部原因只是为了您可以显示一些组件,那么这实际上不是一个好的选择或起点。
JFrame
也是一个复杂的复合成分。也就是说,它实际上由许多其他分层组件组成,这些组件可以协同工作以提供总体体验。
这意味着如果您从此类扩展,您将不得不管理很多额外的复杂性,仅显示一些组件便需要大量开销。
原则上,最好使用组合而不是继承,这会导致第二点。
从任何类扩展都将您锁定在该类用例中。对于JFrame
,您只能通过JFrame
显示该类所管理的内容,没有灵活性或可重复使用性的入口点。
相反,如果您从一个JPanel
的基类开始,则可以将其添加到所需的任何容器中,这将增加该类在所有容器中的灵活性和可重用性
对于我的问题(例如,我不知道它的真实与否),在JFrame类中,关闭按钮始终位于窗口的右上角,但是如果我这样做,则可以将其放置在任意位置(如果可以用是或否回答)
是,不是。框架边框是由外观委托定义的,因此无论如何您实际上并不是从正确的地方开始。
大多数外观委托将框架边框委托给本机平台,对于Windows,是的,关闭按钮在右侧,在Mac上则在左侧。
无论如何,最好能满足用户的期望,将关闭按钮放在不寻常的位置可能会使UI变得“漂亮”,但会降低用户体验-作为一般指导原则,请不要降低用户体验,无论您的程序或UI多么出色,用户都不会喜欢您-但这又是一个(非常广泛的)问题