Java swing设计:静态与实例
我设计了一个html文档编辑器,我想在解决其中的设计问题时得到一些帮助。问题如下: 文档编辑器由一个曲面(JFrame)和一个菜单栏组成。在surface内部,我有三个面板——工具面板、文本面板和状态面板(都是JPanel的扩展)。文本面板具有自定义文本窗格(JTextPane的扩展)。现在的问题是,在很多场景中,工具面板上的菜单和小部件项需要访问JTextPane的底层文档模型。例如,为了实现列表/段落拖动功能,标尺需要知道插入符号在文档模型中的位置,以便我可以标记需要增加其左侧插入的段落 我现在组织设计的方式是-surface是一个单例,因此要访问JTextPane中的html文档模型,您需要通过以下迷宫进行编码- 给我曲面->转到文本面板->转到文本窗格->转到文本窗格的文档 另一种方法是将文本窗格中的文档引用设置为静态,以便可以直接访问 TextPane.getTextDocument() 另外,我正在使用的文本窗格中的html文档目前还没有自定义。因此,我只是使用文本窗格返回的默认HTMLDocument。虽然将来我可能不得不用一个更定制的HTMLDocument扩展来代替它(例如,实现cusom标记)Java swing设计:静态与实例,java,swing,Java,Swing,我设计了一个html文档编辑器,我想在解决其中的设计问题时得到一些帮助。问题如下: 文档编辑器由一个曲面(JFrame)和一个菜单栏组成。在surface内部,我有三个面板——工具面板、文本面板和状态面板(都是JPanel的扩展)。文本面板具有自定义文本窗格(JTextPane的扩展)。现在的问题是,在很多场景中,工具面板上的菜单和小部件项需要访问JTextPane的底层文档模型。例如,为了实现列表/段落拖动功能,标尺需要知道插入符号在文档模型中的位置,以便我可以标记需要增加其左侧插入的段落 我
我有点像一个设计新手。一些设计大师能对此有所启发吗?我想如果你得到10个答案,你就会得到11个答案。:-) 首先,不需要单身。在这种情况下,这只是一种使用全局变量作弊的方式。当您想要打开两个或三个文本文档时会发生什么 您的菜单是否可以随时访问工具面板?由于toolpanel是textpanel的同级,并且处于1-1关系(我认为?),toolpanel了解textdocument(有链接)和一个方便的方法getTextDocument()有点“合理”。您的小部件了解其直接父项工具面板似乎是合理的 这将是我处理问题的方式——对象之间的链接“有意义”。您需要尽可能少的耦合,但有些地方确实需要耦合。也许我误解了你的问题,或者你的想法与我大不相同,在这种情况下,你应该换一种方式。此外,您正在对您的代码将来可能如何发展进行最佳猜测。祝你好运!:-) 任何解决方案都面临一个大问题——文本文档是否会更改?(例如,是否有文件->新建菜单或文件->打开菜单?)。如果是这样,那就需要加以考虑。在我的建议中,JFrame在文件->打开中创建文本文档,然后在工具栏中更改指向它的链接 p、 请添加合适的模型和控制器!我刚才谈到了图形组件,以使事情更简单 p、 p.s.“超前思考”的合理增强示例
好的,如果我得到一个答案,我会接受它,我可以保证(只要答案不会取笑这个问题,或嘲笑我的无知)。@user396089谢谢你的接受。希望我的回答能帮你找到正确的方向。谢谢。答案非常有用,给了我思考设计的新方法。