我在网格窗格中的FXML文件中定义了3个标签.我试图阅读以下XML文件并在网格窗格中显示文件中的标签.XML文件中的数值表示行和列位置.
<data>
<lbl1>0,0</lbl1>
<lbl2>0,1</lbl2>
<lbl3>0,2</lbl3>
</data>
Run Code Online (Sandbox Code Playgroud)
我已将所有元素添加到HashMap中,然后检索它以进行显示.首先,我逐一添加了所有三个标签,如下所示:
hm.put("lbl1", eElement.getElementsByTagName("lbl1").item(0).getTextContent());
hm.put("lbl2", eElement.getElementsByTagName("lbl2").item(0).getTextContent());
hm.put("lbl3", eElement.getElementsByTagName("lbl3").item(0).getTextContent());
Run Code Online (Sandbox Code Playgroud)
然后我按如下方式显示它们:
grid.add(lbl1, Integer.parseInt(hm.get("lbl1").toString().split(",")[0]),Integer.parseInt(hm.get("lbl1").toString().split(",")[1]));
grid.add(lbl2, Integer.parseInt(hm.get("lbl2").toString().split(",")[0]),Integer.parseInt(hm.get("lbl2").toString().split(",")[1]));
grid.add(lbl3, Integer.parseInt(hm.get("lbl3").toString().split(",")[0]),Integer.parseInt(hm.get("lbl3").toString().split(",")[1]));
Run Code Online (Sandbox Code Playgroud)
上面的代码运行良好,没有任何问题,我可以看到网格上的标签.
现在,我没有逐个添加标签,而是通过'for'循环在一个语句中添加了所有标签,如下所示:
if (!eElement.getTagName().toString().equals("data"))
hm.put(eElement.getTagName(), eElement.getTextContent());
Run Code Online (Sandbox Code Playgroud)
如果我尝试显示标签,例如:
grid.add(hm.get("lbl1"),0,0);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:不兼容的类型 - 对象无法转换为Node.
如果我试图强制转换:
grid.add((javafx.scene.Node) hm.get("lbl1"),0,0);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:java.lang.ClassCastException:java.lang.String无法强制转换为javafx.scene.Node
如果我打印hashmap条目,则显示以下输出:
lbl1 = 0,0,lbl2 = 0,1,lbl3 = 0.2
如何解决这个错误?有没有其他方法可以在一个语句中添加所有元素然后显示它们?
| 归档时间: |
|
| 查看次数: |
8836 次 |
| 最近记录: |