代码之家  ›  专栏  ›  技术社区  ›  Domchi

秋千中的复合图案

  •  2
  • Domchi  · 技术社区  · 15 年前

    这基本上是一个架构问题。

    composite pattern 在处理Swing组件时;也就是说,我希望将几个组件与它们的侦听器和单个组件后面的逻辑结合起来,以便于处理。

    例如,考虑一个简单的目录浏览器;例如,JScrollPane中的一个JTree,它具有一些逻辑,在用户扩展JTree节点时处理填充文件名。你将如何实施?

    是否扩展JScrollPane并在构造函数中添加JTree等,然后应用程序处理JScrollPaneExtended类?或者说,您是扩展JPanel还是JComponent?或者在填充JFrame时将所有这些类缝合在一个调用的方法中?或者别的什么?为什么呢?

    我基本上是在寻找一个关于其他人使用什么的粗略指南;我显然想处理某种形式的JComponent,以便在构建GUI时更容易处理,但是不知怎么的,扩展最顶层的组件(本例中的JScrollPane)只是为了有地方放置粘合代码是不合适的。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Geoffrey Zheng    15 年前

    对于一个专有的swing应用程序,我使用了一个独立的并行类层次结构,其中一个“组件”类包装了一个或多个 JComponent s、 我需要一个基类来做很多常见的事情(例如从XML文件设置属性),以便扩展 J组件 不是一个选择。

    JSrollPane 在功能部件的顶部。我还有一个“组”组件,它处理一组复选框或单选按钮。

    这需要一些努力来建立,但一旦你有了基本的设施,就很容易添加新的小部件。

        2
  •  3
  •   Community Mohan Dere    8 年前

    如果不需要UI委托,则扩展 JComponent fine ;如果你这样做, How to Write a Custom Swing Component 是个好的开始。在树表的特定情况下,您可能需要查看 org.netbeans.swing.outline ,如本文所述 answer .