- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近一直致力于 Java Swing 项目,今天在修改 DefaultMutableTreeNode
的子节点时遇到了困难。
以下 SSCCE 说明了该问题:
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
public class Test
{
private static boolean executed = false;
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//
final DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
final JTree tree = new JTree(root);
tree.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent ev)
{
if (ev.getClickCount() == 2)
{
root.removeAllChildren();
for (String s: get())
{
root.add(new DefaultMutableTreeNode(s));
System.out.println(s + " added");
}
System.out.println();
tree.expandPath(tree.getSelectionPath());
}
}
});
frame.add(tree);
frame.setSize(200,200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
static String[] get()
{
if (!executed)
{
executed = true;
return new String[]{"a","b","c"};
}
else return new String[]{"a","b","c","d"};
}
}
如您所见,第一次调用 get()
方法时,它返回一个 3 元素数组,然后返回一个 4 元素数组。当我第一次双击(实际上按下)根节点时,应该有三个子节点(a、b 和 c),并且程序的行为符合预期。当我再次双击根节点时,我想它会有四个子节点。然而事实并非如此。当您第二次双击时,仍然只有三个,而不是四个子节点。
我是不是搞错了?感谢您提前提供帮助。
最佳答案
您应该使用reload()
方法通知模型有关更改
在扩展路径
之前添加此行,如下所示
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.reload(root); // notify changes to model
tree.expandPath(tree.getSelectionPath());
关于Java Swing : JTree DefaultMutableTreeNode not updating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022516/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
当JTree设置为可编辑时,我想在用户编辑DefaultMutableTreeNode时监听文本更改。就像,我想显示用户在节点中输入的内容的状态标签。 不幸的是,我没有找到用于 DefaultMuta
我是 Java 的新手,我想创建一个包含 Map 对象的 DefaultMutableTreeNode 类。 我写了一个 TreeNodeMap 类,它继承自更通用的 TreeNode 类,而后者又继
是否可以将 String 变量转换为 DefaultMutableTreeNode 对象?请解释。上下文: String s = new String(outputTagName); Object s
我有一些 DefaultMutableTreeNode。当程序运行时,我可以更改文本并重新验证它。但如果文本太长,例如文本“tested”,文本将显示为“te...”。 如何更改此设置? 谢谢 最佳答
我创建了一个扩展 DefaultMutableTreeNode 的类。它有一个类型为 Resource 的变量“资源”,以便它可以链接到一个对象,而该对象不会影响其名称。 Resource 类有一个变
我有一个 JTree,projectView: projectView = new JTree(projectViewTop); projectView.setBackground(Color.WHI
我知道我可以将 mouseListener 添加到 Jtree,但我需要双击他的元素之一并执行 doSomething(); 最佳答案 来自documentation of JTree : If yo
如果您在非 EDT 线程中更改 DefaultMutableTreeNode 的用户对象,只是想弄清楚在线程方面会发生什么? 我不是在谈论 DefaultTreeModel 事件,即 insertNo
我已经创建了一个自定义 JTree。可以过滤该树以仅显示包含给定条件(字符串)的那些节点。现在,有什么方法可以只将包含搜索字符串的 DefaulMutableTreeNode 部分加粗吗? 如果树节点
我们使用 Java 中指定的 DefaultMutableTreeNode 实现了一个树结构。 有没有内置的遍历方法? 如果没有,请推荐其他技术。 最佳答案 理论上,您有四种从节点 (DefaultM
我正在 Netbeans 中开发一个小型桌面应用程序。我将一个 JTree 拖放到我的 JFrame 上,现在我想动态填充这个 JTree 的节点层次结构。为此,我编写了一个返回 DefaultMut
我最近一直致力于 Java Swing 项目,今天在修改 DefaultMutableTreeNode 的子节点时遇到了困难。 以下 SSCCE 说明了该问题: import java.awt.eve
如何将树(使用 DefaultMutableTreeNode 类在 Java 中实现)序列化为 JSON(用于通过 RESTful 方法传输到 iOS 客户端)? 我尝试过: String jsonS
如何将列表转换为DefaultMutableTreeNode? 我正在从列表中的数据库中获取数据。现在我想将该列表转换为 JTree。我该怎么做? public class ExpressionTre
我是 Java 的新手,我有一个 JTree,我想添加一些节点然后我想创建一个 custom renderer对于使每个节点都有不同图标的控件,由于我来自 c# 背景,我想向每个节点添加 Tag 以使
在我正在编写的程序中,我有一个 JTree 存储我自己设计的一些对象。我制作了自己的 DefaultTreeCellRenderer 扩展,并覆盖了 getTreeCellRendererCompon
我有一个 Jtree,可以向其中添加新节点。我需要为每个新节点分配一个唯一的 ID。我正在考虑扩展 DefaultMutableTreeNode 类,但我想它不起作用或者我做错了。 那么,我该怎么做呢
我想创建一种方法来转换 JSONObject,如下所示: "master root" : { "folder 1" : { "folder 2" : {
我在 Derby 有一张 table : CREATE TABLE IMPORT_RULES ( RULEID INTEGER NOT NULL, PARENTID INTEGER
我是一名优秀的程序员,十分优秀!