2017-02-18 13 views
1

Java에서 일시적인 MouseListener를 만들려면 어떻게해야합니까? 내가 가진 말 :Java MouseListener transient

이제
public class PanelClass extends JPanel implements Serializable{ 
    private int w; 
    private int h; 
    public PanelClass(int w, int h){ 
     this.w = w; 
     this.h = h; 
      this.setSize(w, h); 
      this.setBounds(0, 0, w, h); 
    }  
} 

public class MainPanel extends JPanel implements Serializable{ 
    public MainPanel(){ 
     setSize(500,500); 
    } 
} 


public class MyClass implements MouseListener, Serializable{ 
    private ArrayList<PanelClass> panels = new ArrayList<>(); 
    private MainPanel mp = new MainPanel(); 

    for(PanelClass panel : panels){ 
     panel.addMouseListener(this); 
     mp.add(panel); 
    } 

    private void serialize(){ 
      //SERIALIZE MainPanel 
    } 

} 

, 나는 더 직렬화 GridLayout과에 대해 오류를 반환합니다 MainPanel를 직렬화합니다.

MouseListener를 패널에 추가하지 않으면 모두 OK입니다. 직렬화 할 것이다.

이 MouseListener를 일시적으로 설정할 수있는 경우 궁금한 점은 무엇입니까?

감사합니다.

+0

나는 당황합니다. 'MouseListener'를 직렬화하지 않으려 고합니다. 하지만 여기서 유일한 MouseListener는 직렬화하려고하는 클래스 인 MyClass입니다. –

+0

죄송합니다, 나쁜 예였습니다. 질문/코드를 편집하여이 예제가 더 나을 것입니다. –

답변

0

GridLayouts는 직렬화 할 수 없습니다.

마우스 수신기와 관련하여 - 개체를 직렬화 할 때 수신기를 제거하고 deserialize 메서드에서 마우스 수신기를 다시 추가해야합니다.

How to make my MouseListeners work in a deserialized JPanel?

너무 거기에 대한 답을 읽어보십시오.

희망이 도움이되었습니다.

0

OK ... 나는 이것을 사용자 정의 MouseListener를 만들어 일시적인 것으로 선언했다. 매력처럼 작동합니다. :)