编组DefaultListModel不会写入数据

时间:2016-06-22 12:45:34

标签: java swing jaxb marshalling

我正在创建一个简单的GUI,其中JLists由DefaultListModels填充。

我有一个班级:

@XmlRootElement (name="data")
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class Data {
    public DefaultListModel data1;
    public DefaultListModel data2;

我正在以正常方式编组。

File file = new File("file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Data.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
Marshaller marshaller = jaxbContext.createMarshaller();        
marshaller.marshal(this.parts, file);

问题是XML文件看起来像这样:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data>
    <data1>
        <size>6</size>
    </data1>
    <data2>
        <size>1</size>
    </data2>
</data>

换句话说,它不是保存数据(它是字符串的向量)。这与DefaultListModel不包含字符串的实际向量这一事实有关吗?我不得不用Vector做这个吗?

1 个答案:

答案 0 :(得分:0)

DefaultListModel类是GUI组件的基础模型(JList)。您的商家数据由您的Data类表示。我建议将字符串Vector放在那里,然后在DefaultListModel处理它们。您可以对其进行编组/解组,因为JAXB框架不知道DefaultListModel类型,但它将处理基本的Java类型。

@XmlRootElement (name="data")
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class Data {
    public List<String> data1;
    public List<String> data2;