我正在寻找一种使用XML和swing构建UI的方法。我有一个XML代码,并寻找一种方法,使用swing来获取UI。我试过Java代码,但我不确定这是否有助于我显示框架和其他组件。
请帮忙。
下面是我的UI中包含JFrame和其他内容的XML代码。我想从java代码中调用这个文件,以便我可以显示我用XML编写的所有内容。
def adjacency_matrix(graph_str):
"""Returns the adjacency matrix representation"""
item = graph_str.splitlines()
items = item[1:]
header = item[0].split(" ")
adj = [[] for _ in range(int(header[1]))]
for i in items:
v1, v2, weight = i.split(" ")
v1 = int(v1)
v2 = int(v2)
adj[v1].insert(v2, weight)
adj[v2].insert(v1, weight)
for row in range(0, len(adj)-2):
for col in range(0, len(adj)-1):
if row != col and adj[row][col] is not None:
adj[row].insert(col, "inf")
return adj
以下是Java代码:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_161" class="java.beans.XMLDecoder">
<object class="javax.swing.JFrame">
<void property="size">
<object class="java.awt.Dimension">
<int>208</int>
<int>87</int>
</object>
</void>
<void property="contentPane">
<void method="add">
<object id="JLabel0" class="javax.swing.JLabel">
<void property="text">
<string>Hello1</string>
</void>
</object>
</void>
<void method="add">
<object id="JButton0" class="javax.swing.JButton">
<string>Hello2</string>
</object>
</void>
<void property="layout">
<object class="java.awt.BorderLayout">
<void method="addLayoutComponent">
<object idref="JButton0"/>
<string>South</string>
</void>
<void method="addLayoutComponent">
<object idref="JLabel0"/>
<string>Center</string>
</void>
</object>
</void>
</void>
<void property="name">
<string>frame0</string>
</void>
<void property="title">
<string>Save/Load View</string>
</void>
<void property="visible">
<boolean>true</boolean>
</void>
</object>
</java>
答案 0 :(得分:2)
您的XML文件显然是使用java.beans.XMLEncoder
从JFrame
对象生成的
因此,解码此XML文件以生成原始对象非常简单。
只需像这样使用java.beans.XMLDecoder
:
public class Main {
public static void main(String[] args) throws IOException {
XMLDecoder xmlDecoder = new XMLDecoder(new FileInputStream("MasterXML.xml"));
Object frame = xmlDecoder.readObject();
xmlDecoder.close();
}
}
您不需要像使用DocumentBuilder
一样进行低级XML解析 -
运行上述代码时,JFrame
会显示: