您好我正在尝试将我的XML文件中的值放到表中,但是它表示列表的长度为0。
package TableTest;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import org.jdom2.Element;
public class JTableDemo extends JFrame {
JTable table;
DefaultTableModel model;
List<TableData> data = new ArrayList<>();
public static void main(String[] args) {
// Die Namen der Columns
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JTableDemo().setVisible(true);
}
});
}
public JTableDemo() {
// Per Xml datei laden
List list = XmlData.instance.getRootElement().getChildren("Entity");
System.out.println("Die größe ist: " + list.size());
for (int i = 0; i < list.size(); i++) {
Element e = (Element) list.get(i);
System.out.println(i + " von " + e.getChildText("Name") + " " + e.getChildText("Art") + " " + e.getChildText("Datum"));
data.add(new TableData(e.getChildText("Name"), e.getChildText("Art"), e.getChildText("Datum")));
}
Item i1 = new Item("Test", "Hi","hi");
Item i2 = new Item("Test1", "Hi", "hi");
Item i3 = new Item("Test2", "Hi", "hi");
// Spalten Überschrift
String[] titles = new String[]{"Name", "Art", "Datum"};
model = new DefaultTableModel(titles, 0);
table = new JTable(model);
// Items Model hinzufügen
model.addRow(i1.getItem());
model.addRow(i2.getItem());
model.addRow(i3.getItem());
// ###### //
setTitle("Demo");
getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(500, 500));
setMinimumSize(getPreferredSize());
setMaximumSize(getPreferredSize());
}
private class Item {
Vector<String> name;
Vector<String> type;
Vector <String> date;
// ####### //
public Item(String name, String type, String date) {
this.type = new Vector<>();
this.name = new Vector<>();
this.date = new Vector<>();
this.name.add(name);
this.type.add(type);
this.date.add(date);
}
// Gibt das Item zurück
public Vector getItem() {
Vector i = new Vector();
i.add(name);
i.add(type);
return i;
}
}
}
我创建的i1,i2等测试项目显示在表格中但是我需要将这些XML值放在一个项目中以将其添加到我的表格中,我无法制作自定义模型,因为截止日期很快就会出现问题出现在几分钟前。
<?xml version="1.0" encoding="UTF-8"?>
<app>
<!-- Pfad für Templates und speicher ort für die Entity.java-->
<Entity>
<Name>Buchung</Name>
<Art>0</Art>
<Datum>Wed Nov 19 11:25:20 CET 2014</Datum>
</Entity>
</app>
编辑:
我试着用
添加它for (Object l1 : data){
model.addRow(l1);
}
但这不会起作用,因为它需要一个对象[]
但我不知道该怎么做
并在开头说“Diegrößeist:0”(大小为:0)
编辑:
package TableTest;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import xmlModul.XmlLoader;
public class XmlData extends XmlLoader {
/**
* instance von der Klasse XmlLoader
*/
public static final XmlLoader instance = new XmlLoader();
/**
* config file
*/
private File tbfile;
/**
* JDOM Document
*/
private Document document;
/**
* Wurzel Element
*/
private Element rootElement;
/**
* Standart Konstruktor <br> Lädt die Config xml datei
*/
public XmlData() {
try {
this.tbfile = new File("tbcont.xml");
this.document = new SAXBuilder().build(tbfile);
this.rootElement = document.getRootElement();
} catch (JDOMException | IOException ex) {
Logger.getLogger(XmlLoader.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void writeNewFile() {
try {
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
outputter.output(document, new FileWriter(tbfile));
} catch (IOException ex) {
Logger.getLogger(XmlLoader.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public Element getRootElement() {
return rootElement;
}
public void addElement(String s, int i, Date d) {
String sName = "Name";
String sArt = "Art";
String sDatum = "Datum";
Element child = new Element("Entity");
child.addContent(new Element(sName).setText(s));
child.addContent(new Element(sArt).setText(String.valueOf(i)));
child.addContent(new Element(sDatum).setText(d.toString()));
rootElement.addContent(child);
try {
FileWriter writer = new FileWriter("tbcont.xml");
XMLOutputter outputter = new XMLOutputter();
outputter.setFormat(Format.getPrettyFormat());
outputter.output(document, writer);
outputter.output(document, System.out);
} catch (IOException e) {
e.printStackTrace();
}
}
}