0

ボタンのマトリックス ( new JButton [6][6];) をシリアル化して、値をファイルに保存し、後でマトリックスに再ロードできるようにしようとしています。データを正常に保存するコードをオンラインで見つけましたが、データを読み込んでその値をマトリックスに返すのに問題があります。

次のコードを使用してみました:

public class SaveListener implements ActionListener {
    public void actionPerformed(ActionEvent ab) {
        saveArray("customlevel", buttons);
    }

    public void saveArray(String filename, JButton[][] write) {
        try {
            FileOutputStream fos = new FileOutputStream(filename);
            GZIPOutputStream gzos = new GZIPOutputStream(fos);
            ObjectOutputStream out = new ObjectOutputStream(gzos);
            out.writeObject(write);
            out.flush();
            out.close();
        } catch (IOException e) {
            System.out.println(e);
        }
    }
}

public class LoadListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        loadArray("customlevel", buttons);
    }
}

public JButton[][] loadArray(String filename, JButton[][] read) {
    try {
        FileInputStream fis = new FileInputStream(filename);
        GZIPInputStream gzis = new GZIPInputStream(fis);
        ObjectInputStream in = new ObjectInputStream(gzis);
        // in.readObject(read);
        JButton[][] load = (JButton[][]) in.readObject();
        in.close();
        return load;
    } catch (Exception e) {
        System.out.println(e);

    }
    return null;
}
4

2 に答える 2

2

あなたはloadArray()配列を渡し、配列を返しています。渡された配列は無視されます。渡された配列が取り込まれることをどういうわけか期待していますか?

于 2013-02-21T15:35:07.553 に答える
0

loadArray() メソッドからロードされた配列を返しているが、 ActionListener.performAction 関数での関数呼び出しの結果を無視しているという事実から、混乱が生じていると思います。ボタンに戻り値を持たせたい場合は、それを割り当てるだけです。

buttons = loadArray(fileName)

于 2013-02-21T15:42:04.787 に答える