Java-интерфейс и логика - PullRequest
       5

Java-интерфейс и логика

2 голосов
/ 20 февраля 2011

3 часа я пытаюсь понять вещь, но безуспешно ...

проблема:

У меня есть класс Gui (клиент) с основным для карточной игры. Gui имеет основной, который имеет в invokelater Runnable, в котором работает логика (отдельный класс, управляющий игровой сессией) и некоторые методы для управления порядком карт.

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                PokerClientGui gui = new PokerClientGui();
                gui.setVisible(true);
                PokerClient pokerClient = new PokerClient(gui);

                pokerClient.gameSession();
            }
        });
}

Логика создается в основном интерфейсе графического интерфейса, передавая сам интерфейс графического интерфейса. Насколько я продолжаю в программе, нет никаких проблем, так как все объекты / строки, отправленные с сервера клиентской логике, получены, и, например, Рука передана в графический интерфейс и отображается правильно. Проблема возникает сейчас: я хочу перейти от графического интерфейса к логике, манипулируемой руке, чтобы отправить его на сервер через метод класса логики.
Так как эта функция вызывается мышью события в графическом интерфейсе (а не в основном графическом интерфейсе), у меня нет дескриптора логического объекта, поэтому я не могу использовать его метод отправки объектов. Я попытался изменить статический метод отправляющей логики, и я сделал статику также членом, участвующим в отправке вещей в сокет .....

он ничего не отправляет ..... это не проблема, что-то не так, и я пытаюсь отловить исключения (и от них ничего не получается)

где я не прав? чего мне не хватает? как я должен связать графический интерфейс и логику?

Ответы [ 2 ]

1 голос
/ 20 февраля 2011

Вместо создания объекта PokerClientGui в основном классе лучше создать его непосредственно в объекте PokerClient и получить к нему доступ gameSession ().

1 голос
/ 20 февраля 2011

Возможно, вы могли бы создать очередь событий в своем классе Runnable() и передать ее и вашему графическому интерфейсу, и вашим конструкторам клиентов.

Клиент добавил бы события для отображения графического интерфейса, а графический интерфейс мог быдобавить события для клиента для обработки.Это может быть проще с двумя очередями, по одной для каждого направления, вместо повторного использования одного канала для обоих направлений.

Тогда ваш графический пользовательский интерфейс и ваш клиент добавят очередь событий из этого объекта в список вещей«проверять» при ожидании в своих циклах событий.Когда событие приходит от другого объекта, оно пробуждает текущий объект для обработки, так же как события от сервера или пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...