Java 从构造函数构建GUI。[设计决定]

Java 从构造函数构建GUI。[设计决定],java,user-interface,Java,User Interface,我刚刚完成了我们的考试项目,当回顾我编写的代码时,我觉得我做得很好。不过,很明显,总是好得多。但也许那只是我 我负责编写GUI,并将其与应用程序逻辑相耦合。在制作GUI时,我决定为每个窗口(例如LoginWnd.java)制作一个类文件,并在构造函数中实际构建GUI。我将初始化所有内容并在这个构造函数中设置所有数据 然后,为了在应用程序中导航,我将在jbutton上设置actionlisteners。例如,在SearchWnd中,点击“Search”jbutton将创建一个带有一些指定参数的Re

我刚刚完成了我们的考试项目,当回顾我编写的代码时,我觉得我做得很好。不过,很明显,总是好得多。但也许那只是我

我负责编写GUI,并将其与应用程序逻辑相耦合。在制作GUI时,我决定为每个窗口(例如LoginWnd.java)制作一个类文件,并在构造函数中实际构建GUI。我将初始化所有内容并在这个构造函数中设置所有数据

然后,为了在应用程序中导航,我将在jbutton上设置actionlisteners。例如,在SearchWnd中,点击“Search”jbutton将创建一个带有一些指定参数的ResultWnd的新对象

现在我有点想知道:这个设计决定在任何方面都不好吗?有什么我应该知道的设计范例吗


谢谢。

我也在构造器中初始化了我的GUI,所以它不会坏:)但是当它太长时,我会将部分代码提取到单独的GUI组件中。

你的方法总体上听起来不错-只要它能工作,你就达到了主要目标!因此,我在这里的评论更多地是关于微调/更广泛的设计方面

如果GUI在程序执行过程中不会随之更改,那么在构造函数中进行GUI构造并没有什么根本性的错误。这里的理由是,应为“一次性”施工活动保留施工人员。因此,对于具有预先确定的布局的对话框和诸如此类的对话框来说,这可能是很好的

如果您有一个更动态的GUI,其中组件在整个程序执行过程中经常被添加和删除,那么我强烈建议将其移动到构造函数之外的一组方法,以便可以独立于对象构造来调用它们。如果需要进行初始设置,构造函数本身仍然可以调用这些方法,但随后您可以调用这些方法来添加新组件、刷新布局等

好消息是,如果你弄错了,重构这些东西并不难——如果需要的话,将安装代码从构造函数中拉到单独的方法中通常是很简单的

另一件需要注意的事情是经常重复的咒语“宁可创作也不要继承”。也就是说,如果您可以通过组装现有组件而不是继承和重写您的设计来让GUI工作,那么从长远来看,维护GUI可能会更好/更容易。例如,我认为我从来没有将JFrame子类化过——在其中添加包含所有特定于应用程序的组件的JPanel几乎总是比较干净的


最后,注意不要将GUI组件与应用程序逻辑过于紧密地耦合。Swing实际上很好地鼓励您将数据模型与表示代码分开(例如,使用)。这是值得研究和理解的方法。关键是,您通常应该以一种与应用程序无关的方式构建GUI组件,但通过将它们连接到正确的数据模型和事件处理程序等,为它们提供特定于应用程序的行为。

。有很多东西需要理解,我不太明白你刚才说的,所以有很多东西需要研究。但总的来说,这似乎是合法的