我有两个字符串 node1/node2/node3/node4“和”node1/node2/node5/node6“。...我怎样才能从这个字符串中构建一个摇摆的JTree
?这是我构建一个字符串的代码....
import java.awt.*;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.tree.*;
public class PathTest
{
public PathTest()
{
DefaultMutableTreeNode node = buildNodeFromString();
DefaultTreeModel model = new DefaultTreeModel(node);
JTree tree = new JTree(model);
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(tree);
f.setSize(300,300);
f.setLocation(200,200);
f.setVisible(true);
}
private DefaultMutableTreeNode buildNodeFromString() {
String qqq= "node1/node2/node3/node4";
DefaultMutableTreeNode node, lastNode = null, root = null;
String[] s = qqq.split("/");
for (String str : s) {
node = new DefaultMutableTreeNode(str);
if (root == null)
root = node;
if (lastNode != null)
lastNode.add(node);
lastNode = node;
}
return root;
}
public static void main(String[] args)
{
new PathTest();
}
}
for (String str : s) {
node = new DefaultMutableTreeNode(str);
if (root == null)
root = node;
if (lastNode != null)
lastNode.add(node);
lastNode = node;
}
在代码段中,检查lastNode是否已经有同名的子节点,而不是创建新的DefaultMutableTreeNode实例。
试试这个,这段代码为树创建一个根,然后开始在它下面添加字符串,如果你不想让那个根显示,只需调用< code > tree . setrootvisible(false);
import java.util.Enumeration;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class PathTest {
public PathTest() {
// Create the root node, I'm assuming that the delimited strings will have
// different string value at index 0
DefaultMutableTreeNode root = new DefaultMutableTreeNode("ROOT");
// Create the tree model and add the root node to it
DefaultTreeModel model = new DefaultTreeModel(root);
// Create the tree with the new model
JTree tree = new JTree(model);
// Build the tree from the various string samples
buildTreeFromString(model, "Node 1/Node 2/Node 3/Node 4");
buildTreeFromString(model, "Node 1/Node 2/Node 3/Node 5");
buildTreeFromString(model, "Node 1/Node 2/Node 3/Node 6");
buildTreeFromString(model, "Node 1/Node 2/Node 4/Node 5");
buildTreeFromString(model, "Node 1/Node 1/Node 3/Node 5");
// UI
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(tree);
f.setSize(300, 300);
f.setLocation(200, 200);
f.setVisible(true);
}
/**
* Builds a tree from a given forward slash delimited string.
*
* @param model The tree model
* @param str The string to build the tree from
*/
private void buildTreeFromString(final DefaultTreeModel model, final String str) {
// Fetch the root node
DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
// Split the string around the delimiter
String [] strings = str.split("/");
// Create a node object to use for traversing down the tree as it
// is being created
DefaultMutableTreeNode node = root;
// Iterate of the string array
for (String s: strings) {
// Look for the index of a node at the current level that
// has a value equal to the current string
int index = childIndex(node, s);
// Index less than 0, this is a new node not currently present on the tree
if (index < 0) {
// Add the new node
DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(s);
node.insert(newChild, node.getChildCount());
node = newChild;
}
// Else, existing node, skip to the next string
else {
node = (DefaultMutableTreeNode) node.getChildAt(index);
}
}
}
/**
* Returns the index of a child of a given node, provided its string value.
*
* @param node The node to search its children
* @param childValue The value of the child to compare with
* @return The index
*/
private int childIndex(final DefaultMutableTreeNode node, final String childValue) {
Enumeration<DefaultMutableTreeNode> children = node.children();
DefaultMutableTreeNode child = null;
int index = -1;
while (children.hasMoreElements() && index < 0) {
child = children.nextElement();
if (child.getUserObject() != null && childValue.equals(child.getUserObject())) {
index = node.getIndex(child);
}
}
return index;
}
public static void main(String[] args) {
new PathTest();
}
}
希望这有帮助。
问题内容: 我需要按插入顺序设置键/值对,因此我选择使用over 。但是我需要将转换为JSON字符串,其中的顺序将保留在字符串中。 但目前,我正在通过以下方式实现这一目标: 首先将LinkedHashMap转换为JSON。 然后将JSON转换为字符串。 输出为: 但我想要按键插入的顺序来进行操作,如下所示: 一旦我将转换为JSON,它就会失去顺序(很明显JSON没有顺序的概念),因此字符串也是乱序
问题内容: 我有一个字符串形式: 依此类推(长度会有所不同)。由此创建字典的最简单方法是什么? 我知道我可以拆分,但是我无法获得正确的语法。如果我分开,那么我如何将这两个部分结合在一起? 对此进行迭代似乎很痛苦。 问题答案: 编辑:下一个解决方案是当您想要将值作为整数,我认为这是您想要的。
问题内容: 如何在Angularjs中使用查询参数构建URL。 我看到了API $ location.search() 问题是$ location(url)是重定向到url。就我而言,我想为查询参数传递url和key:value对,并构建url。就像是 网址: params: 结果: 我喜欢使用该URL进行链接。我也看到了angular encoding ,字符。我可以避免吗? 编辑: 我的意图是
问题内容: 这是一个非常基本的问题。但是我无法在Java文档中找到答案,也无法对其进行测试,因为我不知道这种方法是否存在。 我可能会收到一个URL字符串,可能是 要么 然后我会得到可能以开头的资源路径,或者就像 我正在看课,可以处理第一部分,即获取hostURL使其成为HTTPS或HTTP请求。问题是附加资源路径。我必须手动检查它的第一个字母是否存在。我想知道此功能是否已经在某个类中。 问题答案:
问题内容: 我有一个字符串,其内容是XML。我想将标签分开,并使其成为Java中的字符串列表。以下是我正在尝试的东西: 我想将其分为以下列表: 我试图通过JAXB处理器执行此操作,但效果不佳。还使用split尝试了一些愚蠢的逻辑,但这也无济于事。还有其他方法可以做到这一点吗? 问题答案:
在这个问题之前,我先要说明一个事实,那就是我学习编程才一个月,而这个学校的作业却把我难住了。具体地说,它是摩尔斯电码到英语翻译器(反之亦然)...这是我被困住的部分: