gpt4 book ai didi

Java Swing : how do I properly instantiate GUI and pass domain objects?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:30:20 24 4
gpt4 key购买 nike

我有一个带有嵌套面板的 GUI(带有嵌套面板等的选项卡)。我需要将域对象传递给深层嵌套的面板。我可以想到两种方法:

  • 在一个地方实例化所有的图形用户界面对象,比如框架类。那会使传递域对象变得非常简单,但是 Frame 类会庞大且难以维护。

  • 每个面板都有自己的类,我们在其中对其进行实例化和布局
    组件。现在它易于维护,类也很干净,但是如何
    我如何传递我的域对象链?我不想链传他们通过甚至不应该知道他们的面板的构造函数
    存在。顶层面板会有大量这样的对象开始。

Niether way 似乎是一种解决方案。你通常如何处理这个问题?

最佳答案

当我组合一个 Java Swing GUI 时,每个主要 GUI 元素都有一个数据模型。请注意,这不是 MVC 模式。这更像是本地 MV 模式。如果需要,您可以将 GUI 元素监听器视为“ Controller ”。

Each panel has its own class, where we instantiate and layout its components. Now its easy to maintain and classes are clean, but how do I pass down the chain my domain objects?

你的想法是对的,虽然你不应该做太多传球。

我的 JFrame(或 JApplet)将有一个关联的全局类型字段模型类。该模型类的实例通常会传递给子元素。这是为了让子元素在选择菜单选项时做出正确的 react (例如)

我的 JPanel(s) 将有一个关联的模型类,用于维护文本或按钮子元素的状态。

更复杂的子元素,如 JListJTree,已经有关联的数据模型。为了方便起见,我可能会将这些关联的数据模型包装到 JPanel 模型类中。

子元素将触发某种选择或 Action 监听器。除了与父级关联的模型类之外,其中一些监听器可能还需要访问模型类。在这种情况下,您将不得不将模型类的实例传递给监听器。

关于Java Swing : how do I properly instantiate GUI and pass domain objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7863000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com