TreeModel和TreeSelectionModel都是模型的类型。您可以获取正在使用的那些

tree.getModel();




tree.getSelectionModel();


其中tree是JTree类型的Object。
两者也都有设置器方法。
我的问题是:
如果我正确地得出结论,那棵树有两个模型(TreeModel和TreeSelectionModel),那么它将与MVC模式一起使用吗?

最佳答案

没错,JTree实际上有两个模型(以及JTableJList)。但是,TreeSelectionModel被视为GUI模型,而TreeModel是实际的应用程序数据模型,如此处所述:A Swing Architecture Overview - Oracle

我假设您可以通过这种方式来考虑这种结构:通过JTree#getSelectionModel()操作的模型实际上类似于包裹DecoratorJTree#getModel()。在这种情况下,您实际上将具有以下优势:

+-----------------------------------------------+
|    +-----------+                              |
|    | TreeModel >-------(relation: Decorator)  |
|    +-----^-----+       |                      |
|          |             |                      |
|          |   +---------v----------+           |
|          |   | TreeSelectionModel |           |
|          |   +---------^----------+           |
|          |             |                      |
|    +-----^-------------v----+                 |
|    |        Presenter       |                 |
|    +------------^-----------+                 |
|                 |                             |
|    +------------v-----------+                 |
|    |        TreeView        |                 |
|    +------------------------+                 |
|                                               |
+------------------- JTree ---------------------+


我使用的是Presenter而不是Controller,因为当View也是Controller时,这是实现MVC模式的方式(嗯,我想那是MVP)。

这当然不是实现它的确切方法,但我认为它可能以类似的方式工作。无论如何,我认为它仍然可以很好地实现,而不必担心使用它们:)

07-24 09:37
查看更多