使用XML文件在swing中构建GUI

时间:2018-03-14 11:19:44

标签: java xml swing user-interface javabeans

我正在寻找一种使用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>

1 个答案:

答案 0 :(得分:2)

您的XML文件显然是使用java.beans.XMLEncoderJFrame对象生成的 因此,解码此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会显示:

enter image description here