Czy istnieje sposób na zapisanie przy pomocy JAXB, list typu JTextArea i Line2D? Próbowałem podobnie jak w przypadku list typu String, ale tak się nie da.
import java.awt.geom.Line2D;
import java.io.File;
import java.util.ArrayList;
import javax.swing.JFileChooser;
import javax.swing.JTextArea;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class Test
{
Listy listy;
ArrayList<JTextArea> listaPol;
ArrayList<Line2D> listaLinii;
public static void main(String[] args)
{
Test test = new Test();
test.zapiszListeDoXML();
}
public void zapiszListeDoXML()
{
JTextArea pole1 = new JTextArea();
pole1.setBounds(400,400,200,100);
JTextArea pole2 = new JTextArea();
pole2.setBounds(400,800,200,100);
listaPol = new ArrayList<JTextArea>();
listaPol.add(pole1);
listaPol.add(pole2);
Line2D linia1 = new Line2D.Double(100,100,300,100);
Line2D linia2 = new Line2D.Double(100,200,300,200);
listaLinii = new ArrayList<Line2D>();
listaLinii.add(linia1);
listaLinii.add(linia2);
listy = new Listy();
listy.setListaPol(listaPol);
listy.setListaLinii(listaLinii);
JFileChooser fileCh = new JFileChooser();
if (fileCh.showSaveDialog(null)==JFileChooser.APPROVE_OPTION)
{
File nazwaPliku = fileCh.getSelectedFile();
try
{
JAXBContext jaxbContext = JAXBContext.newInstance(Listy.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(listy, nazwaPliku);
jaxbMarshaller.marshal(listy, System.out);
}
catch (JAXBException f)
{
f.printStackTrace();
}
}
}
}
import java.awt.geom.Line2D;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTextArea;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "Listy")
public class Listy
{
List<JTextArea> listaPol = new ArrayList<JTextArea>();
public List<JTextArea> getListaPol()
{
return listaPol;
}
@XmlElementWrapper(name = "listaPol")
@XmlElement(name = "Value")
public void setListaPol(List<JTextArea> listaPol)
{
this.listaPol = listaPol;
}
List<Line2D> listaLinii = new ArrayList<Line2D>();
public List<Line2D> getListaLinii()
{
return listaLinii;
}
@XmlElementWrapper(name = "listaLinii")
@XmlElement(name = "Value")
public void setListaLinii(List<Line2D> listaLinii)
{
this.listaLinii = listaLinii;
}
}