我有一个程序,我正在使用保存功能进行编码,该保存功能使用序列化来保存主对象。但是,我注意到整个程序序列化正确时,JLabel在序列化后直接从粗体字体变为常规字体。我创建了一个SSCCE来说明我正在经历的事情,我将在最后发布。不过,我的问题是为什么会发生这种情况?序列化似乎是一个随机的问题。有没有一种方法可以在序列化时避免我的JLabel中的样式更改?
SSCCEE:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class JLabelSerializingTest extends JFrame
{
public JLabel theLabel = new JLabel("This is a JLabel with bold text.");
{
theLabel.setAlignmentX(CENTER_ALIGNMENT);
theLabel.setFont(theLabel.getFont().deriveFont(1));
}
public JButton theButton = new JButton("Serialize the JLabel");
{
theButton.setAlignmentX(CENTER_ALIGNMENT);
theButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("This is a test"));
o.writeObject(theLabel);
o.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
});
}
public JLabelSerializingTest()
{
setLayout(new BoxLayout(this.getContentPane(),BoxLayout.Y_AXIS));
add(Box.createVerticalGlue());
add(theButton);
add(theLabel);
add(Box.createVerticalGlue());
pack();
setLocationRelativeTo(null);
}
public static void main(String[] args)
{
new JLabelSerializingTest().setVisible(true);
}
}
只是更新,我仍然没有找到任何答案。我不知道如何“碰撞”这个主题,但这是试图让它回到公众的注意力。