2010-05-05 3 views
1

두 개의 클래스로 나뉘어 진 폼이 있습니다. 각 클래스는 양식의 일부인 위젯을 나타냅니다. 이 클래스가 서로간에 데이터를 공유하고 서로를 업데이트 할 수있게하는 가장 좋은 방법은 무엇입니까?클래스 간 통신

예 : 클래스 A의 버튼을 클릭합니다. 클래스 C의 텍스트 필드 업데이트

답변

3

이 당신이 할 수있는 매우 짧 :

가 다른 클래스
public class ButtonFrame extends JFrame implements ActionListener 
{ 
    private TextFieldFrame frame; 

    public ButtonFrame(TextFieldFrame frame) 
    { 
     this.frame = frame; 
     // init your components and add this as actionlistener to the button 
     .... 
    } 

    public void actionPerformed(ActionEvent evt) 
    { 
     frame.notifyButtonPressed(); 
    } 
} 

: 이것은 당신이 무엇을 매우 짧은 다시

public class TextFieldFrame extends JFrame 
{ 
    private JTextField field = ...; // init in your constructor 

    public void notifyButtonPressed() 
    { 
     field.setText("Yes man!! The button is pressed by the user!"); 
    } 
} 

입니다 할 것.
Singleton 패턴으로 작업 할 수도 있지만 더 좋은 방법입니다.

0

모든 양식 객체를 보유하는 클래스를 만들 수 있습니다. 폼 클래스는 모두 부모 클래스를 알고 그것을 통해 통신합니다.

버튼이 클래스 A에서 클릭되면 클래스 A는 부모 클래스의 메서드를 호출하고 부모 클래스는 클래스 C에 해당 텍스트 필드를 업데이트하도록 알립니다.

0

위젯을 생각하지 마십시오. 모델에 응용 프로그램을 설계하십시오. 위젯을 해당 모델에 창으로 표시하십시오. (그리고 불필요하게 클래스를 확장하지 않습니다.)

0

Mediator pattern을 보시면 아이디어를 얻을 수 있습니다.

또한 JFace 데이터 바인딩 프레임 워크의 목표는 객체 간의 값 동기화입니다.하지만 문서화가 잘되어 있지 않고 사용할 재미가 없습니다. JFace_Data_Binding