java - 使用 XML 文件在 swing 中构建 GUI

标签 java xml swing user-interface javabeans

我正在寻找一种使用 XML 和 swing 构建 UI 的方法。我有一个 XML 代码,正在寻找一种使用 swing 从中获取 UI 的方法。我尝试了下面的 Java 代码,但我不确定这是否会帮助我显示框架和其他组件。

请帮忙。

下面是 XML 代码,其中包含 JFrame 和我想要在 UI 中使用的其他内容。我想从 java 代码调用这个文件,以便我可以显示我在 XML 中编写的所有内容。

<?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>

下面是Java代码:

 import javax.swing.*;
 import java.io.File;
 import org.w3c.dom.Document;
 import org.w3c.dom.*; 
 import java.awt.*;
 import java.awt.event.*;


 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.DocumentBuilder;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException; 

public class MasterScreen{

public static void main (String argv []){
 try {
 DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
 DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
 Document doc = docBuilder.parse (new File("MasterXML.xml"));
 System.out.println("Siri");
 doc.getDocumentElement ().normalize ();
 System.out.println("Siriri");
 }
 catch (SAXParseException err) {
     System.out.println ("** Parsing error" + ", line " + err.getLineNumber () + ", uri " + err.getSystemId ());
     System.out.println(" " + err.getMessage ());

     }catch (SAXException e) {
     Exception x = e.getException ();
     ((x == null) ? e : x).printStackTrace ();

     }catch (Throwable t) {
     t.printStackTrace ();
     }
}
}

最佳答案

您的 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

关于java - 使用 XML 文件在 swing 中构建 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49276419/

相关文章:

java - 我可以仅缩放 OrthograficCamera libgdx 的一部分吗

xml - 此应用程序启动失败,因为应用程序配置不正确(VS 2010中的VS 2017)

xml - 使用 XSD 和 xmlns 验证 XML =""

php - XMLA解析获取多个属性

Java Swing 为输出创建文本区域

java - Proguard Maven 使用 Lambda 表达式屏蔽错误

java - 如何将 Java Long 转换为 Cassandra 的 byte[]?

java 默认列表模型

java - JPanel 组件放置

java - 如何停止 Java 运行整个代码而不等待用户的 Gui 输入