作为一名Java Swing新手,我在将用户界面逻辑与域逻辑分离时遇到了一些困难。
我有一个小的(琐碎的?)带有JFrame的Swing应用程序,其中包含JLabel、JTextField和JButton。按下JButton时,会弹出JFileChooser对话框。选择文件后,JTextField包含文件的绝对路径。到目前为止还没有什么引人注目的。我想完成的下一件事是将文件的绝对路径“注入”到一个文件管理器类中,该类将在进行选择并更新JTextField(每次使用JButton选择文件时)时处理文件的实际处理。
我的问题是:
该应用程序分为几个包:
我希望我足够清楚。。。
提前谢谢你把事情弄清楚。
这里有一些建议:
>
使用SwingWorker
,如图所示,在监听进度的同时保持GUI的活力。
使用Action
(如图所示)封装功能。
使用文件
,这是一种方便的跨平台抽象。使用它来撰写新的抽象,而不是提取非跨平台的部分。
附录:另见摇摆架构概述和答案。
就我个人而言,当我处理这类问题时,我会尝试将可重用性和责任(谁对什么负责)视为主要需求。
也就是说,我试图让我的模型建立在这样的地方,这样他们就不会关心数据是如何或从哪里来或去的,他们简单地提供接口访问来实现它。
为了将所有元素连接到一起,我依赖于模型向客户机提供事件,因为模型不应该关心谁想知道,只需要提供所需的功能。因此,为了向客户提供反馈,我需要依靠一系列的听众。
我会将侦听器分解为特定的作业,文件读取的通知将是它自己的侦听器,对模型的更改(添加/删除/更新)文件bean将是另一个。其他通知可能需要不同的侦听器,这会阻止您创建实现不想知道的monster侦听器。
为了在模型中设置值,我会错误地选择属性设置器/getters。这将您的模型与实现解耦(如果您以自动化的方式使用模型呢??)
如果可能,内部数据最好由模型管理。也就是说,如果您更改了模型正在管理的文件bean上的属性,那么模型应该能够监视并处理更改。话虽如此,您可能在将来某个时候需要一个哑模型,您可以批量更新一系列文件bean,然后要求模型更新自身。
我个人可能会为模型提供外部更新的手段,同时提供至少一个能够提供自我监控的实现,这让您可以灵活地为正确的情况选择正确的模型。
这里还有内存泄漏的危险。如果您在不再需要文件bean时没有正确地从文件bean中删除任何侦听器,那么最终可能会阻止该bean在以后被垃圾收集。
在可能的情况下,使用接口。这在尝试将这些模型组合在一起时提供了很大的灵活性。
对于您所描述的,我将允许文件bean由文件管理器负责,这样文件管理器就变成了文件bean的容器。
取决于您的项目有多大,以及您将来可能希望如何重用代码,这将极大地影响代码的布局。
我通常把UI代码放在UI包和子包中,但那只是我。我倾向于将接口内容与实现内容分开(通常物理上放在单独的Jar文件中,但同样,那是我)。这意味着我只需要包含接口库和我可能使用的任何实现,如果需要(或者直接根据需要),使用某种类型的工厂来实际实例化实现。以JDBC驱动程序为例。
你要关注sphere的责任。从您描述的内容来看,我觉得文件bean属于文件管理器的职责范围,因此我将把两者绑定在一起。
这正是我的观点
我很好奇,在放置组件时,如何使用miglaway在网格上均匀分布组件: 例如,如果我在一个按钮组中放置四个JRadioButton以跨越3行2列(2,3),然后放置三个JButton,则分布的权重是不相等的,我最终会得到以下结果: 如图所示,A和B的大小相同,C保留剩余的空间:我希望A、B、C在垂直方向上等于三分之一。 如果这在GridBagLayout中是可能的,我也可以利用它,但是我在任何一种
我开始为一个项目制作这个网页,到目前为止是这样的: 但是我想把文本区域放在另一个上面,而不是并排放置 我希望它看起来怎么样: 谁能帮帮我吗 https://i.stack.imgur.com/ZzsKS.png
5.4.第一部分: Android 用户界面 在这部分中,我们将着重介绍 Yamba 的第一个部分:消息更新界面。 我们的主要任务有:
我的目标是理解接口隔离原则,同时实现多态性。 我的预期结果是:我可以用接口分离原理实现多态。 我的实际结果是:不,我不能。我被迫创建样板并使用Liskov替换原则(如果有一个Worker,必须有一个Worker不能吃,所以为Worker创建一个可以吃的扩展Worker的接口)。我想我误解了接口隔离原则。 这是违反接口隔离原则的代码。 我被告知将接口分成两部分。 解决方法是使用Liskov替换原理。
我已经将查询结果格式化为MySql的样式,包含所有 ---- . 有没有办法让JTextArea中的文本和eclipse中的一样?
主要内容:将Mat转换成缓冲的图像,使用AWT/Swings显示图像在前面的章节中,我们讨论了如何使用OpenCV Java库来读取和保存图像。 除此之外,我们还可以使用GUI库(如AWT/Swings和JavaFX)在单独的窗口中显示加载的图像。 将Mat转换成缓冲的图像 要读取图像,使用方法。 此方法返回以的形式读取的图像。 但是,要将此图像与GUI库(AWT/Swings和JavaFX)结合使用,应将其转换为包的类的对象。 以下是将OpenCV的对象转换为对