JLabel在序列化时丢失粗体字体样式

时间:2014-10-13 22:32:25

标签: java serialization fonts jlabel

我有一个程序,我正在使用保存功能进行编码,该保存功能使用序列化来保存主对象。但是,我注意到整个程序序列化正确时,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);
    }
}

只是更新,我仍然没有找到任何答案。我不知道如何“碰撞”这个主题,但这是试图让它回到公众的注意力。

0 个答案:

没有答案