Как использовать одни и те же данные между двумя GUI в Java? - PullRequest
1 голос
/ 30 ноября 2011

Эй, ребята, я сейчас работаю над домашним заданием. У меня есть два графических интерфейса, к которым я хотел бы получить доступ к тем же данным, которые будут обрабатываться моим менеджером учетных записей другого класса Я считаю, что мне нужно создать один основной класс, который будет вызывать оба GUI и создавать объект accountmanager.

Как только я сконструирую объект, как я отправлю информацию обоим классам GUI?

Спасибо за вашу помощь, надеюсь, я был достаточно подробен. Я действительно не знаю, как объяснить это, не публикуя весь код.

редактировать


Хорошо, я ценю ваши ответы. Я застрял в этом ..

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

Я хочу решить, какие данные будут храниться для объекта учетной записи, используя графический интерфейс. Например, GUI1 открывает учетные записи с именем, которое вводит пользователь. Учетная запись назначает идентификационный номер для каждой открытой учетной записи. GUI2 может затем получить доступ к информации, хранящейся для каждой учетной записи, выбрав идентификационный номер.

Ответы [ 6 ]

2 голосов
/ 30 ноября 2011

Создайте объект, передайте его (ссылку) в оба 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
}
1 голос
/ 30 ноября 2011

Как уже говорили другие, есть несколько способов сделать это, но способ, которым вы решите это сделать, должен отражать ваши способности (т. Е. Ваш учитель / лектор / и т. Д. Будет знать, вдруг ли вы внедрили Шаблон наблюдателя и сможетене объясните что это).В этой конкретной ситуации я бы использовал подход Singleton, поскольку здесь нет базы данных или чего-то более сложного.

Синглтон - это класс, в котором создается только один его экземпляр и который обеспечивает глобальную точку доступа к объекту.

Вот пример одноэлементного класса и то, как вы могли бы его использовать:

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.Это означает, что для получения одноэлементного объекта вы должны сделать что-то вроде:

 ExampleSingleton myObject = ExampleSingleton.getInstance();

Затем, чтобы использовать объект, на который вы ссылаетесь myObject и любые методы в нем (в данном случае sayHello().

Для вас это означает, что ваш код может выглядеть примерно так:

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
    }
}

Поскольку оба объекта GUI используют один и тот же синглтон, данные всегда будутбыть доступным для обоих.

1 голос
/ 30 ноября 2011

Вы можете сначала изучить некоторые шаблоны проектирования.Вы можете использовать шаблон наблюдателя или MVC design , который вам все равно придется выучить рано или поздно, если вы хотите заняться более сложным программированием ...

Просто Google " java mvc example " и попробуйте.

1 голос
/ 30 ноября 2011

Используйте шаблон Observer .

. У класса AccountManager есть java.util.Observable .

У классов с графическим интерфейсом есть * 1009.* java.util.Observer .

Вызов addObserver () в AccountManager для каждого из классов графического интерфейса.

Вызовите notifyObservers, когда в AccountManager произойдет изменение.

0 голосов
/ 30 ноября 2011

Вы можете сделать это двумя способами:

  1. Создать универсально доступные данные (например, синглтоны), к которым два GUI могут получить доступ
  2. Передать данные в GUI

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

0 голосов
/ 30 ноября 2011

Ваш вопрос немного расплывчатый; Есть много способов сделать это, вот один пример.

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

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

public class ViewTwo extends JFrame
{
   MyData myData = new MyData;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...