2011-11-30 3 views
1

안녕하세요, 저는 현재 숙제를하고 있습니다. 나는 다른 클래스 accountmanager에 의해 처리 될 동일한 데이터에 액세스하고 싶은 두 개의 GUI를 가지고있다. 나는 두 GUI를 호출하고 accountmanager 객체를 생성 할 하나의 메인 클래스를 만들어야한다고 생각한다.Java에서 두 GUI간에 동일한 데이터를 사용하는 방법은 무엇입니까?

일단 개체를 구성하면 두 GUI 클래스에 정보를 어떻게 보냅니 까?

앞서 도움을 주셔서 감사합니다. 충분히 자세히 설명 드리겠습니다. 나는 모든 코드를 게시하지 않고 그것을 설명하는 방법을 모른다.

편집


가 좋아 난 당신의 응답을 주셔서 감사합니다. 나는 이것에 갇혀있다.

Account Accnt = new Account(); 
GUI1 gui1 = new GUI1(); 
GUI2 gui2 = new GUI2(); 

GUI를 사용하여 어떤 데이터가 계정 객체에 저장 될지 결정하고 싶다. 예를 들어, GUI1은 사용자가 입력 한 이름으로 계정을 엽니 다. 계정은 열린 각 계정에 대한 ID 번호를 할당합니다. 그런 다음 GUI2는 ID 번호를 선택하여 각 계정에 저장된 정보에 액세스 할 수 있습니다.

+0

누구나 내 편집을 읽고 옵서버를 사용하지 않고 조언을 해줄 수 있습니까? 나는 우리가 관측자를 넘지 않았기 때문에 나는이 임무를 위해 간단하게 유지해야한다고 생각한다. – LeythG

+0

BTW - 'GUI'는 일반적으로 하나의'JFrame'과 하나 이상의'JDialog' 또는'JOptionPane' 인스턴스를 포함해야합니다. 2 개 이상의 프레임을 사용하는 경우이 사용 사례에 문제가 발생할 수 있습니다. –

답변

2

개체를 생성하고 생성자 또는 메서드를 통해 두 GUI에 개체를 전달합니다 (참조).

예 :

main(){ 
    Account accnt = new Account(); 
    // both GUI objects receive the same accnt object 
    GUI1 gui1 = new GUI1(accnt); 
    GUI2 gui2 = new GUI2(accnt); 
    // your code 
} 

public class GUI1{ 
    private Account accnt; 

    public GUI1(Account accnt){ 
     this.accnt = accnt; 
     // your code 
    } 
    // your code 
} 

public class GUI2{ 
    private Account accnt; 

    public GUI2(Account accnt){ 
     this.accnt = accnt; 
     // your code 
    } 
    // your code 
} 
+0

나는 그것을 전달하거나 참조하는 부분을 이해하지 못한다고 생각한다. GUI에서 사용자로부터 데이터를 검색하기 위해 buttonlisteners를 추가하려고합니다. GUI에 버튼 리스너를 넣으면 다른 GUI에서 액세스 할 원래 객체에 데이터를 어떻게 다시 보낼 수 있습니까? – LeythG

+0

"GUI"개체가 모두 동일한 Account 개체에 대한 참조를 보유하는 경우 두 GUI 개체 모두 계정 개체에 액세스하거나 수정할 수 있습니다. 생성자에서 추가하려면 GUI 객체의 생성자에 매개 변수를 추가하십시오. 또는이를위한 메소드를 작성하십시오. – user1071777

0

귀하의 질문이 좀 모호; 이것에 대해 여러 가지 방법이 있습니다. 여기에 하나의 예가 있습니다.

public class MyData() 
{ 
    ...my data 
} 

public class ViewOne extends JFrame 
{ 
    MyData myData = new MyData; 
} 

public class ViewTwo extends JFrame 
{ 
    MyData myData = new MyData; 
} 
0

두 가지 방법으로 그것을 할 수 있습니다 :

  1. 두 GUI를가
  2. 는 GUI
에 데이터를 전달 액세스 할 수있는 (즉, 싱글)을 보편적으로 액세스 할 수있는 데이터를 생성
 

    Data theData = new Data(); 
    GUIObject object1 = new GUIObject(); 
    GUIObject object2 = new GUIObject(); 
    object1.setData(data); 
    object2.setData(data); 

+0

나는이 줄을 따라 가고 있지만 실제로 setData 부분을 이해하지는 못한다. 편집 된 질문을보고 다시 답장 해 주실 수 있습니까? 고맙습니다 – LeythG

1

Observer Pattern을 사용하십시오.

AccountManager 클래스에 java.util.Observable을 구현하십시오.

GUI 클래스에 java.util.Observer을 구현하십시오.

각 GUI 클래스에 대해 AccountManager의 addObserver()으로 전화하십시오.

AccountManager에서 변경이 발생하면 notifyObservers를 호출하십시오.

1

먼저 디자인 패턴을 공부하고 싶을 것입니다. 당신은 observer pattern를 사용하거나 그냥 "java mvc example을"구글과 한번 시도해 당신이 좀 더 고급 프로그래밍을 할 싶다면, 어쨌든 조만간 배워야 할 것이다 MVC design, ...

를 사용할 수 있습니다.

1

다른 사람들이 말했듯이 이것에 대해서는 여러 가지 방법이 있습니다.하지만 당신이 선택하는 방식은 능력을 반영해야합니다 (즉, 교사/강사/등이 갑자기 관찰자 패턴을 구현하는지 알 수 있습니다. 그것이 무엇인지 설명 할 수 없다).이 특별한 상황에서 나는 싱글 톤 접근 방식을 사용합니다. 데이터베이스 나 주요하게 복잡한 것이 없기 때문입니다.

싱글 톤은 하나의 인스턴스 만 만들어지고 개체에 대한 전역 액세스 지점을 제공하는 클래스입니다.

여기에 싱글 톤 클래스의 예 당신은 하나를 사용하는 방법 :

public final class ExampleSingleton { 
    private static ExampleSingleton instance = null; 

    private ExampleSingleton() { /*Do not allow instantiation*/ } 

    public static ExampleSingleton getInstance() { 
     if (instance == null) { 
      instance = new ExampleSingleton(); 
     } 

     return instance; 
    } 

    public void sayHello() { 
     System.out.println("Hello!"); 
    } 
} 

위의 클래스를 사용하면 명시 적으로 ExampleSingleton를 구성 할 수 없음을 의미합니다 개인 생성자를 사용하고 있습니다. 이것은 당신이 같은 것을 할 것, 즉 싱글 톤 객체를 얻기 위해 의미합니다. 그리고이 경우 sayHello()에 (거기에 당신이 myObject를 참조하는 것이 목적 및 방법을 사용

ExampleSingleton myObject = ExampleSingleton.getInstance(); 

을이 당신을 위해 무엇을 의미

을 당신의 코드는 다음과 같이보고 끝낼 수 있다는 것입니다 : 모두 GUI 개체가 같은 싱글 톤을 사용하고 있기 때문에

public class MyGui1 { 
    private ExampleSingleton myData = null; 

    public MyGui1() { 
     myData = ExampleSingleton.getInstance(); 
    } 

    public updateData(. . .) { 
     myData.updateData(. . .); 
    } 

    public retrieveData(. . .) { 
     myData.retrieveData(. . .); 
    } 
} 

public class MyGui2 { 
    private ExampleSingleton myData = null; 

    public MyGui2() { 
     myData = ExampleSingleton.getInstance(); 
    } 

    . . . 

    //Do you see where I'm going with this? 
    } 
} 

public class Main { 
    public static void Main(String args[]) { 
     ExampleSingleton myData = ExampleSingleton.getInstance(); 
     myData.setInitialData(. . .); 

     MyGui1 = new MyGui1(); 
     MyGui2 = new MyGui2(); 

     //Do more stuff here 
    } 
} 

를, 데이터는 항상 사용할 수있을 것입니다 둘 다.

관련 문제