如何序列化JButton []

时间:2013-12-07 19:52:22

标签: java swing serialization jbutton

我目前正在用Java编写我的学校项目,因为你必须管理一个小村庄的经济。 所以游戏看起来像这样:有一个框架,其中有49个SpecButtons(稍后解释)代表村庄的瓷砖。点击一个打开一个构建菜单,您可以从中选择要在那里构建的建筑类型等....

我创建了一个新类,它扩展了JButton类和Implements Serializable,称为SpacButtons。在本课程中,我添加了两个整数,一个Buildings类类型构建变量(也是我创建的类)和一些方法。

SpecButtons buttons=new SpecButtons[49];

所以我必须使用序列化保存游戏,这就是我尝试这样做的方式:

        private class SaveButtonActionListener implements ActionListener{
    public void actionPerformed(ActionEvent button) {
        try{
            FileOutputStream fos = new FileOutputStream("saves.ser");
            ObjectOutputStream oos = new ObjectOutputStream(fos);

            for(int x = 0;x<49;x++){
                oos.writeObject(buttons[x]);
            }
            oos.close();
            fos.close();
            }catch(IOException e){System.out.println("File Writing Error!");}

    }
}

private class LoadButtonActionListener implements ActionListener{
    public void actionPerformed(ActionEvent button) {

        try{
            FileInputStream fip = new FileInputStream("saves.ser");
            ObjectInputStream oip = new ObjectInputStream(fip);
            for(int x=0;x<49;x++){
                buttons[x] = (SpecButtons) oip.readObject();
            }
            oip.close();
            fip.close();
        }catch(IOException e){System.out.println("File Reading Error!");}
        catch(ClassNotFoundException ce){System.out.println("Class Not Found!");}
}
}

因此,它会创建.ser文件,但是当我尝试加载它时,没有任何反应。 如果你们有任何想法如何使它工作,我将非常感激。

1 个答案:

答案 0 :(得分:1)

  

因此,它会创建.ser文件,但是当我尝试加载它时没有任何反应。

假设您的按钮被正确反序列化,您应该从.ser文件加载后将它们添加到主框架中。

for(int x=0;x<49;x++){
  buttons[x] = (SpecButtons) oip.readObject();
}
// Add the buttons to the main frame where you would like them to appear...