我正在尝试解析下面的XML文件并基于它创建一个JTree。
<OBJECTS>
<WINDOW NAME = "WINDOW 01" URL = "URL 01">
<PAGE NAME = "PAGE 01" URL = "PAGE URL 01">
</PAGE>
</WINDOW>
</OBJECTS>
“窗口01”将添加到根节点“对象列表”,但“页面01”节点不会显示在“窗口01”节点下。下面给出了使用的源代码。请帮忙!!!
public class DataNode extends DefaultMutableTreeNode {
private static final long serialVersionUID = 1L;
public String ObjectType, ObjectName, URL, ElementType;
public DefaultMutableTreeNode node;
public DataNode(DefaultMutableTreeNode node, Element element) {
this.node = node;
this.ObjectType = element.getTagName();
this.ObjectName = element.getAttribute("NAME");
this.URL = element.getAttribute("URL");
this.ElementType = element.getAttribute("TYPE");
}
public DataNode(Element element) {
this.node = new DefaultMutableTreeNode("OBJECT");
this.ObjectType = element.getTagName();
this.ObjectName = "Object List";
this.URL = "";
this.ElementType = "";
}
@Override
public String toString() {
return this.ObjectName;
}
}
这是主课。编译时不会显示错误或警告。
public class MyOwn {
private JFrame contentsFrame;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MyOwn window = new MyOwn();
window.contentsFrame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public MyOwn() {
contentsFrame = new JFrame();
contentsFrame.setTitle("My JTree");
contentsFrame.setBounds(100, 100, 549, 738);
contentsFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTree objectListTree = new JTree(convertXMLtoTree("G:/Collection.xml"));
objectListTree.setAlignmentY(Component.TOP_ALIGNMENT);
objectListTree.setAlignmentX(Component.LEFT_ALIGNMENT);
contentsFrame.getContentPane().add(new JScrollPane(objectListTree));
}
private DefaultMutableTreeNode convertXMLtoTree(String Path) {
NodeList nWindow, nPage;
DefaultMutableTreeNode dRoot, dWindow, dPage;
DataNode xRoot, xWindow, xPage;
try {
File fXmlFile = new File(Path);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
xRoot = new DataNode(doc.getDocumentElement());
dRoot = new DefaultMutableTreeNode(xRoot);
nWindow = doc.getDocumentElement().getElementsByTagName("WINDOW");
for (int i = 0; i < nWindow.getLength(); i++) {
dWindow = new DefaultMutableTreeNode(((Element)(nWindow.item(i))).getAttribute("NAME"));
xWindow = new DataNode(dWindow, (Element)(nWindow.item(i)));
dRoot.add(xWindow);
nPage = ((Element)(nWindow.item(i))).getElementsByTagName("PAGE");
for (int j = 0; j < nPage.getLength(); j++) {
dPage = new DefaultMutableTreeNode(((Element)(nPage.item(j))).getAttribute("NAME"));
xPage = new DataNode(dPage, (Element)(nPage.item(j)));
dWindow.add(xPage);
}
}
return dRoot;
} catch (Exception e) {
return null;
}
}
}
将自定义的DefaultMutableTreeNode
DataNode添加到WINDOW 01
的子节点,而不是从未添加到JTree
的dWindow
。代替
dWindow.add(xPage);
与
xWindow.add(xPage);
> 创建了一个没有任何组件的JFrame 我重写了keyPressed()方法,这样每当从键盘上按下一个键时,框架中就会出现一个按钮(通过使用add()然后调用repaint())。现在我想问的是,当从键盘上按下键的时候,没有任何东西被添加到框架中,但是当我调整框架窗口的大小时,按下键后,按钮不知从框架的哪里出来....出什么事了?
我正在开发一个graqphqlapi,它通过Mongoose从MongoDB获取数据。现在我遇到的问题是GraphQL不使用查询来解析字段,而是使用字段解析程序,因为没有设置ID,所以字段解析程序无法工作。 TypeDefs: 解析程序: 功能: 查询: 结果:
我试图在弹出组件和JMenuItem组件的click action事件中向JTree动态添加节点。我右键单击节点组件并添加另一个节点。添加节点适用于叶节点,但不适用于非叶节点。我不知道代码有什么问题。似乎添加了节点,但Gui没有更新。 平台:Windows 7 Java Java版本“1.7.0\u 17”Java(TM)SE运行时环境(build 1.7.0\u 17-b02)Java HotS
我已经实现了一个TreeModel来调整存量数据模型,以便将其可视化为JTree。我遇到了一个问题,节点有多个相同的子(叶)节点。例如,考虑一个JTree,它的叶节点是Strings。每当父节点包含具有相同String值的子节点时,就会出现问题。这些叶节点的TreePath是相同的,作为Strings,equals()返回true。留档明确地调用这个: JTree及其相关类广泛使用TreePath
我在使用R的group_by和SUMMARY函数时遇到了一些问题,我想知道你们是否可以帮我一些忙。我有一张类似的表格: 我试图使用dplyr的group_by和SUMMARY来找到频率列的平均值。下面是我的示例代码: 我所期望的是,一个表格被吐出来,分解按单个类别分组的平均频率,如下所示: 但是,我收到的是一个按类别分组的表,每个类别接收整个表的平均值,如下所示: 有什么线索吗?我应该说我是初学者
问题内容: 我想使用文件浏览器创建文本编辑器,所以当我启动应用程序时,我想在程序中在JTree上添加节点,以便它向我显示所有文件和文件夹,例如在“我的文档”文件夹中,并允许我访问这些文件和文件夹(尤其是文件夹)。我试图从这个例子中弄清楚安德鲁·汤普森是如何做到的, 但是我失败了。我使用此示例为“我的文档”中的所有文件和文件夹创建了节点 。但这就是全部,当单击表示文件夹的节点之一时,我无法弄清楚如何