Сочетание пользовательского интерфейса JavaFX и клиент-сервер-приложение;Проблема с подключением клиента к серверу и многое другое - PullRequest
0 голосов
/ 01 июня 2019
  1. Проблема: клиент больше не будет подключаться к серверу.
  2. Мне нужны различные объекты пользовательского интерфейса, которые инициализируются в методе start моего класса Application в моем main.Как передать их на главную?

Полная справка: Моя цель с этим приложением - создать маленькую игру, в которую смогут играть несколько человек.Это будет действительно просто с несколькими кнопками и метками, и в конце концов должен быть способ взаимодействия игроков.Я также хочу, чтобы эта игра была доступна через сервер, чтобы у каждого игрока была учетная запись, состоящая из имени пользователя и пароля.Поскольку я новичок в Java-программировании, я знаю, что - в данный момент - полностью вне моей лиги.Но я стараюсь понемногу изучать все, что мне нужно для того, чтобы туда добраться.

Важная часть: мне удалось локально соединить сервер и клиента с помощью пользовательского интерфейса, но я не смог заставить свою программу создать учетные записи, который должен храниться в моей "AccountDatabase".Это привело к тому, что никто не смог успешно «войти» (здесь имитируется вход в систему с отображением сообщения «войти успешно!»). Попытался это исправить, обнаружил, что мне нужно использовать потоки для нескольких клиентов, и переписал свойКод почти полностью.Теперь я даже не могу подключить клиента к серверу ... Я перепробовал так много всего и переписал столько кода, что больше не знаю, что происходит.Я был бы чрезвычайно признателен, если бы кто-то здесь мог взглянуть на мой, вероятно, очень грязный код, чтобы увидеть, что мне нужно сделать здесь.

Код моего основного класса:

открытый класс Main extends Application{

@Override
public void start(Stage primaryStage) {
    LoginUI loginUI = new LoginUI(primaryStage);
    loginUI.setScene(primaryStage, loginUI.getScene());
    primaryStage.show();
}

public static void main(String[] args) {
    launch(args);
    InetAddress ip = null;
    try {
        ip = InetAddress.getByName("localhost");
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }
    Client client = new Client(ip, 9376);
    loginUI.getSignUpUI().setSignUpButtonAction(client);
    //how do I get the instance of LoginUI instantiated in the start-Method?
}

}

Ожидаемый результат: клиент подключается к серверу, пользовательский интерфейс (LoginUI) отображается с гиперссылкой, которая перенаправляет на (SignUpUI).Эта сцена должна позволить пользователю ввести имя пользователя и пароль, проверить «AccountDataBase» для уже существующих учетных записей с этим именем пользователя и, наконец, создать учетную запись, если это возможно.Вернувшись в (LoginUI), пользователь также должен иметь возможность ввести имя пользователя и пароль, которые сравниваются с данными учетной записи в моей «AccountDataBase» и позволяют пользователю войти в систему.

Фактические результаты: клиент не будетподключиться к серверу после переписывания кода для использования потоков.Самое большее, что я получил, это установление соединения, но не удалось создать новые учетные записи, так как введенная пользователем учетная дата, вероятно, не была сохранена в AccountDataBase ...

Если вы сделали это так далекоВам, вероятно, понадобится увидеть код других классов, которые я написал.Я просто не публиковал их, потому что Stackoverflow сказал мне не публиковать целые файлы ... Не стесняйтесь, дайте мне знать, если вам понадобится больше кода!

1 Ответ

0 голосов
/ 01 июня 2019

как это

public class Main extends Application {
    LoginUI loginUI
@Override
public void start(Stage primaryStage) {
    loginUI = new LoginUI(primaryStage);
    loginUI.setScene(primaryStage, loginUI.getScene());
    primaryStage.show();
}

public static void main(String[] args) {
    launch(args);
InetAddress ip = null;
try {
    ip = InetAddress.getByName("localhost");
} catch (UnknownHostException e) {
    e.printStackTrace();
}
Client client = new Client(ip, 9376);
loginUI.getSignUpUI().setSignUpButtonAction(client);
//how do I get the instance of LoginUI instantiated in the start-Method?
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...