- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何获得 JTree
只听其TreeModel
虽然它实际上对用户可见,或者至少让它在相应的 JFrame
后立即取消注册。被处置了吗?
据我所知,JTree
从其模型中取消注册的唯一情况是,如果您向它传递一个新模型(使用setModel(…)
)。
如果从其他地方引用模型,这会导致树不被垃圾收集。示例:我使用 WatchService
实现了 TreeModel
拥有始终最新的文件系统树模型。即使模型上有一个监听器,也需要我让 WatchService
通知模型有关文件系统更改的信息,因此无法对其进行垃圾收集。因此,即使 JTree 不再可见,它仍然由模型保留在内存中,该模型仍然需要从 WatchService 获取更新,尽管这些都不再是必要的.
我想最好的方法是创建一个扩展 JTree 的新类,用于在模型中注册和取消注册。如果是这样,当显示或处置组件时会调用哪些方法?也许 addNotify()
和 removeNotify()
是不错的候选者?
最佳答案
使用JTree的文档:http://docs.oracle.com/javase/7/docs/api/javax/swing/JTree.html .
JTree
有一个名为 treeModelListener
的 protected 字段,您可以使用 JTreeModelListener.removeTreeModelListener()
直接从模型中删除该字段。如果您想随意从其自己的监听器中删除树模型,请扩展 JTree
并添加以下方法:
public void unregisterOrWhatever() {
this.treeModel.removeTreeModelListener(this.treeModelListener);
}
如果您想监听窗口关闭事件,请向 JTree
添加一个 HierarchyListener
来监听 HierarchyEvent.PARENT_CHANGED
事件。每当 JTree 添加到新窗口时,您都可以在窗口关闭时添加 WindowListener
unregisterOrWhatever
。从窗口中删除 JTree
时,不要忘记同时删除 WindowListener
。
关于java - 当 JTree 不可见时,如何从 TreeModel 取消注册 JTree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20387436/
我正在为机器人编写一个java插件,其中涉及使用动态JTree。当使用插件的程序关闭然后重新打开时,任何变量和对象都需要存储在 robotsDataModel 中。但是,我无法在程序数据模型中存储 J
我正在尝试实现自己的 TreeModel 以便在 TreeView 中使用。 我已经对 Gtk::TreeModel 进行了子类化,目前正在尝试用我自己的实现覆盖虚拟方法。 但我对它的基础知识有疑问。
我想建立一个TreeModel来自一些List包含源数据的 s。现在,有一个名为 DynamicUtilTreeNode 的实用程序类可以用来从数组、 vector 和哈希表构建树,但是……不能从列表
这里我有一个ManagePageSource,它使用zk的mvvm模式为TreeView提供模型。 ManagePageSource 有一个内部类 Node 来保存 treeNode 数据。 Node
我有一个自定义的 GenericTreeModel,它工作得很好。现在我希望用户能够使用拖放重新排列节点,所以我将一个节点移动到数据模型中的新父节点。然而,TreeModel 希望使用 row_has
我想要 2 个 TreeModel:第二个 TreeModel 的根是第一个 TreeModel 的节点(因此,第二个 TreeModel 是第一个 TreeModel 的子树)。 我认为我可以通过克
当我第一次看到 javax.swing.tree.TreeModel 时,我认为编写所有方法的工作量相当大。然后我找到了 DefaultTreeModel 并认为它可以很容易地通过适配器模式用于文件树
目前,我正在开发一个多线程应用程序。我使用TreeView来显示每个线程的状态,每个线程一行。 主要有两类: 包含TreeView的主要GUI类 类,用于处理线程 将Gtk::TreeModel::i
作为法国人,我的英语不好,抱歉。 我将使用 python 和 pygtk 运行的应用程序升级为适用于 Gtk3 的 python 和 pyobject。很难找到关于 pyGobject 的完整文档,我
我使用自定义模型来填充TreeView并尝试使用 for ix in self.dataView.selectedIndexes(): text = ix.da
我有一系列线程定期检索 RSS 提要,并希望使用 PropertyChangeSupport 刷新自定义 JTree。但是,它使用实现 TreeModel 的自定义类,我不确定如何触发自动更改。这是可
我正在开发一个世界模拟,其中世界表示为: public class World { Turtle turtle; // .. basic constructors, getters,
我真的必须自己实现深度克隆吗?或者是否有任何库方法可以获取 JTree 或其 TreeModel 的深度克隆? 最佳答案 正如@SteveKuo所说,为什么需要克隆TreeModel? TreeMod
我有以下模型: public class CategoryModel { public String id; public String name; public String
我有一个对象层次结构,我想使用 JTree 和 TreeModel 显示它。层次结构的每个级别都是一个不同的类。 我见过的所有 JTree 和 TreeModel 示例在树的整个层次结构中都有一个公共
场景:客户端登录,创建自己的 TableModel 和 TreeModel,并能够在稍后访问它。 TableModel 和 TreeModel,由 Java 类对象和字符串组成。 我如何才能将其存储在
例子: http://jsfiddle.net/yeehawjared/bawv0790/ 我正在构建一个可以打开网页的应用程序,加载大型数据树结构的 JSON。 TreeModel.js 解析这个很
我有一个使用 DefaultTreeModel 的 Jtree,每个单独的节点都包含一个包含各种字符串字段的 UserObject。 我想通过递归遍历找到并选择一个节点,直到它找到具有匹配其中一个字段
我有一个自定义的 JTree 和一个自定义的 JModel;当我给它一个新模型时,我希望 JTree 能够“自动扩展”。目前,它只是将所有节点折叠到根。 这是一个例子: private class C
我需要克隆一棵我用 TreeModel.js 制作的树.我真正需要做的是复制它,对其进行更改并检查节点数量是否减少。如果是这样,恢复到原来的树。这是我到目前为止所做的复制它的一个小例子,这是不正确的:
我是一名优秀的程序员,十分优秀!