Joh*_*ers 7 java oop user-interface
这是一个一般性的问题,但我会首先给你我的具体问题:
我正在为我的程序编写一个GUI,用于一个程序,该程序将采用框架的形式,其中放置了各种小部件(标签,文本字段等).它最初将使用该javax.swing库,但我在库和GUI本身之间设置了一层抽象,以便更容易创建执行相同操作的Web应用程序.
我希望有一个代表GUI布局的类:也就是说,它应该包含有关各种标签,按钮等放置在内容窗格中的位置的所有信息.目前,我正在考虑的实施如下:
class Layout
{
public MyLabel titleLabel;
public myTextField sequenceTextField;
[...]
public void drawTitleLabel()
{
titleLabel = new MyLabel("This is the title.");
titleLabel.setLocation(wherever);
titleLabel.draw();
}
public void drawSequenceTextField()
{
sequenceTextField = new MyTextField();
[...]
sequenceTextField.draw();
}
[...]
public void drawGuiFrame()
{
drawTitleLabel();
drawSequenceTextField();
[...]
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我将内容窗格上的每个窗口小部件声明为该类的字段Layout,然后创建drawWidgetName绘制每个窗口小部件的方法.最后,我创建了一个方法来调用每个draw...方法以绘制整个GUI.
但这似乎是错误的.这些draw...方法感觉好像它们应该是各个小部件本身的方法,而不是整个GUI的大规模布局.这表明,我应该创建单独的类TitleLabel,SequenceTextField等等,每一个draw方法,然后只是有一个drawGuiFrame在方法Layout调用所有这些类的draw方法(我甚至可以创建一个抽象类,这些新类可以扩展).
这会有一些其他直接的好处.假设我想要合并一个复选框系统以及我的标签和文本区域.然后,我可以宣布,作为其自己的类,并给它的属性isOptionA,isOptionB等等,以记录其复选框选中了.
但是我有点不愿意以这种方式实现GUI,原因有两个.首先,创建这么多新类会使代码库与大量小.java文件混乱.其次,这些将是非常"单一使用"类:我永远不会再使用代码,因为类将纯粹为这个特定的GUI设计.
那么 - 有多少课程太多了?可以创建许多只会因为你觉得它们应该是类而只使用一次的新类吗?正如我所说,虽然我欢迎特定于这个特定问题的建议,但我也在寻找关于何时适合添加新类的更一般的指示.
对我来说,单独的课程似乎是正确的方法 您可以在包,模块和子模块中组织类,这样它们就不应该"混乱代码库".java中的大型应用程序很容易拥有大量的类,这些类只能由单个应用程序使用.这就是java作为一种语言和java生态系统整体运作的方式.
在java中,通常认为你拥有的粒度级布局越多越好.