[英]Java display elements within a single JTable Cell
我正在尝试制作自己的XML编辑器,并且正在使用JTable来显示XML节点。 但是,我有以下XML:
<Department id="A">
<DeptCode>Example1</DeptCode>
<DeptName>Example2</DeptName>
<li>List1</li>
<li>List2</li>
<li>List3</li>
<li>List4</li>
<li>List5</li>
<li>-Point</li>
</Department>
<Department id="B">
<DeptCode>Example1</DeptCode>
<DeptName>Example2</DeptName>
<li>List1</li>
<li>List2</li>
<li>List3</li>
<li>List4</li>
</Department>
...等等。
如何在单个单元格的不同行(在JTable中)显示每个部门的“ li”元素? 希望有道理!
我能得到的最接近的是:
NodeList getElementTagName_LI = doc.getElementsByTagName("li");
NodeList getElementTagName_dept = doc.getElementsByTagName("Department");
//GET DEPARTMENTS
for (int a = 0; a < getElementTagName_dept.getLength(); a++) {
org.w3c.dom.Node allElements_dept = getElementTagName_dept.item(a);
if (allElements_dept.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
org.w3c.dom.Element eElement = (org.w3c.dom.Element) allElements_dept;
departmentID = eElement.getAttribute("id").toString();
deptCode = eElement.getElementsByTagName("DeptCode").item(0).getTextContent().toString();
deptName = eElement.getElementsByTagName("DeptName").item(0).getTextContent().toString();
//Get Each XML List Element
li = eElement.getElementsByTagName("li").item(0).getTextContent().toString();
li1 = eElement.getElementsByTagName("li").item(1).getTextContent().toString();
li2 = eElement.getElementsByTagName("li").item(2).getTextContent().toString();
li3 = eElement.getElementsByTagName("li").item(3).getTextContent().toString();
li4 = eElement.getElementsByTagName("li").item(4).getTextContent().toString();
}
//Insert the XML Node Values within the JTable.
dept_TableModel.insertRow(0, new Object[]{departmentID});
dept_TableModel.setValueAt(deptCode, 0, 1);
dept_TableModel.setValueAt(deptName, 0, 2);
dept_TableModel.setValueAt(li+li1+li2+li3+li4, 0, 3);
}
这是可行的;仅当XML文档中每个部门的列表元素数量相同时。 但是我需要使它具有所需的尽可能多的列表元素。
如果有人能指出正确的方向,将不胜感激,我在google上到处都有,并提出了相应的代码。 我尝试了多个数组列表,但是无法使其在JTable中正确排序。
非常感谢! Alpaxj
您可能可以执行以下操作:
String listLi = "";
for(int i = 0; i < eElement.getElementsByTagName("li").getLength(); i++)
listLi += eElement.getElementsByTagName("li").item(i).getTextContent().toString();
接着
dept_TableModel.setValueAt(listLi, 0, 3);
希望这就是您想要的!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.