【发布时间】:2018-01-18 11:15:29
【问题描述】:
我有一个界面,可以同时并排播放两个视频,用户可以随时在上面显示的 3 个文本框中将 cmets 添加到视频中。我想要做的是将保存在这些框中的文本与时间戳一起保存。我有一个类来创建一个已保存的对象-单击保存按钮即可获取 3 个文本输入和视频的位置。我不确定的是一旦我将输入传回我的班级后如何保存。
这是我在单击按钮时调用类的代码:
Save.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent i) {
Saved saved = new Saved();
saved.setPosition(mediaPlayerComponent2.getMediaPlayer().getPosition() * 1000);
saved.setGap(textArea.getText());
saved.setForces(textArea1.getText());
saved.setFindings(textArea2.getText());
try {
File file = new File("text.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Saved.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(saved, file);
jaxbMarshaller.marshal(saved, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
});
这是我创建保存对象的类:
@XmlRootElement
public class Saved {
float position;
String gap;
String forces;
String findings;
public float getPosition(){
return position;
}
@XmlAttribute
public void setPosition(float position){
this.position = position;
}
public String getgap() {
return gap;
}
@XmlElement
public void setGap(String gap) {
this.gap = gap;
}
public String forces() {
return forces;
}
@XmlElement
public void setForces(String forces) {
this.forces = forces;
}
public String findings() {
return forces;
}
@XmlElement
public void setFindings(String findings) {
this.findings = findings;
}
}
【问题讨论】:
-
可能与jaxb-marshalling-java-to-output-xml-file 中的问题相同。创建一个 Marshaller 并将“已保存”流式传输到
File -
我刚刚尝试实现将其传递给文件,但出现以下错误:非静态内部类,而 JAXB 无法处理这些
-
@MarkHarrison 是
Saved还是 inner class?比您需要将其声明为static或将其更改为“外部”类。 -
@devpuh 谢谢这是第一个错误 - 现在我得到了:该属性有一个 setter "public void doubleviewer.DoubleViewer$Saved.setFindings(java.lang.String)" 但没有 getter。对于 marshaller,请定义 getter。 - 我用新的动作处理程序代码更新了我的代码