我正在制作一个简单的GUI,其中DefaultListModels填充了JLists。
我有一堂课:
@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>
换句话说,它不是保存数据(它是String的向量)。这与DefaultListModel不包含字符串的实际向量有关吗?我必须用Vector代替吗?
最佳答案
DefaultListModel
类是GUI组件(JList
)的基础模型。您的业务数据由您的Data
类表示。我建议将字符串向量放在此处,然后在DefaultListModel
中处理它们。您可以对此进行编组/解组,因为JAXB框架不了解DefaultListModel类型,但是它将处理基本的Java类型。
@XmlRootElement (name="data")
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class Data {
public List<String> data1;
public List<String> data2;