如何在JAVA Swing中将xml文件导入JTable?

时间:2016-10-07 04:25:23

标签: java xml swing user-interface jtable

我想将xml文件导入JTable,创建一个表并将其显示给用户。我知道如何读取文件并在控制台上显示它,但我不知道如何在GUI中显示它。任何人都可以给我一些想法吗?

我写了一个文件选择器:

public String fileChooser(){
    JFileChooser fileChooser = new JFileChooser();
    FileFilter filter = new FileNameExtensionFilter("XML file","xml");
    fileChooser.setFileFilter(filter);
    fileChooser.showOpenDialog(null);
    File file = fileChooser.getSelectedFile();
    String fileName = file.getAbsolutePath();
    return fileName;
}

解析XML文档:

public void readTheFile(String filePath){
    try {   
     File inputFile = new File(filePath);
     DocumentBuilderFactory dbFactory 
        = DocumentBuilderFactory.newInstance();
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
     Document doc = dBuilder.parse(inputFile);
     doc.getDocumentElement().normalize();
     System.out.println("Root element :" 
        + doc.getDocumentElement().getNodeName());
     NodeList nList = doc.getElementsByTagName("student");
     System.out.println("----------------------------");
     for (int temp = 0; temp < nList.getLength(); temp++) {
        Node nNode = nList.item(temp);
        System.out.println("\nCurrent Element :" 
           + nNode.getNodeName());
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
           Element eElement = (Element) nNode;
           System.out.println("Student roll no : " 
              + eElement.getAttribute("rollno"));
           System.out.println("First Name : " 
              + eElement
              .getElementsByTagName("firstname")
              .item(0)
              .getTextContent());
           System.out.println("Last Name : " 
           + eElement
              .getElementsByTagName("lastname")
              .item(0)
              .getTextContent());
           System.out.println("Nick Name : " 
           + eElement
              .getElementsByTagName("nickname")
              .item(0)
              .getTextContent());
           System.out.println("Marks : " 
           + eElement
              .getElementsByTagName("marks")
              .item(0)
              .getTextContent());
        }
     }
  } catch (Exception e) {
     e.printStackTrace();
  }

}

JMenuItem-(打开文件):

JMenuItem mnItemOpenFile = new JMenuItem("Open the file");
    mnItemOpenFile.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            readTheFile(fileChooser());

        }
    });

我的XML文件:

<?xml version="1.0"?>
<class>
      <student rollno="393">
      <firstname>dinkar</firstname>
      <lastname>kad</lastname>
      <nickname>dinkar</nickname>
      <marks>85</marks>
      </student>
      <student rollno="493">
      <firstname>Vaneet</firstname>
  <lastname>Gupta</lastname>
  <nickname>vinni</nickname>
  <marks>95</marks>
   </student>
   <student rollno="593">
      <firstname>jasvir</firstname>
      <lastname>singn</lastname>
      <nickname>jazz</nickname>
      <marks>90</marks>
   </student>
   </class>

我想在JTable中展示这个: http://i.stack.imgur.com/uXhO5.png

当用户按下“打开文件”时,他们可以选择XML文件,程序将自动加载文件并将文件中的数据放入JTable中,如上图所示。

我该如何写这个函数?

0 个答案:

没有答案