2013-02-21 1 views
0

값을 파일에 저장하고 나중에 행렬에 다시로드 할 수 있도록 버튼 행렬 (new JButton [6][6];)을 직렬화하려고합니다. 데이터를 성공적으로 저장하는 코드를 온라인에서 찾았지만 데이터를로드하고 해당 값을 행렬로 반환하는 데 문제가 있습니다.배열에 Java 직렬화

다음 코드를 사용하여 시도 : 당신이 두 배열을 전달하고 배열을 반환하는 loadArray()에서

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; 
} 
+2

을하고 * 특정 * 문제는 무엇인가? 예외 등? –

+0

문제가 Buttons 배열로 값을 다시로드하는 중입니다. 코드가 괜찮은 것처럼 보이고 예외 문제가 발생하지 않지만 작동하지 않습니다. –

+3

"작동하지 않는다"는 것은 무엇을 의미합니까? 20 개의 질문을 할거야? – jtahlborn

답변

0

loadArray() 메서드에서로드 된 배열을 반환하지만 ActionListener.performAction 함수에서 함수 호출의 결과를 무시한다는 사실 때문에 혼란이 올 것으로 생각됩니다. 당신이 버튼을 반환 값을 가지고 싶다면, 그냥 할당 그래서

buttons = loadArray(fileName)

2

. 전달 된 배열은 무시됩니다. 당신은 어쨌든 전달 된 배열이 채워질 것이라고 기대하고 있습니까?