java - JavaFX用户界面和客户端-服务器-应用程序的结合;将客户端连接到服务器以及许多其他问题
问题描述
- 问题:客户端不再连接到服务器。
- 我需要 UI 的不同对象,它们在我的主应用程序类的 start-Method 中初始化。我如何将它们传递给主?
完整背景:我对整个应用程序的目标是创建一个多人可以玩的小游戏。这将非常简单,只需几个按钮和标签,最后还应该有一种让玩家互动的方式。我还希望通过服务器访问这个游戏,每个玩家都有一个帐户,由用户名和密码组成。由于我是 Java 编程的新手,我知道这 - 目前 - 完全超出了我的范围。但我正在一点一点地学习我需要的一切才能到达那里。
重要的部分:我设法用 UI 在本地连接服务器和客户端,但无法让我的程序创建帐户,这些帐户应该存储在我的“AccountDatabase”中。这导致没有人能够成功“登录”(这里通过显示消息“登录成功!”来模拟登录)试图解决这个问题,发现我需要使用线程来为多个客户端和重写我的代码几乎完全。现在我什至无法将客户端连接到服务器......我尝试了很多东西并重写了很多代码,以至于我不知道出了什么问题了。如果有人可以看看我可能超级混乱的代码,看看我需要在这里做什么,我将非常感激。
我的主要课程的代码:
公共类主要扩展应用程序{
@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?
}
}
预期结果:客户端连接到服务器,UI (LoginUI) 显示带有重定向到 (SignUpUI) 的超链接。这个场景应该让用户输入用户名和密码,检查“AccountDataBase”是否已经存在具有该用户名的帐户,如果可能,最后创建帐户。回到(LoginUI),用户还应该能够输入用户名和密码,将其与我的“AccountDataBase”中的 Account-Data 进行比较,然后让用户登录。
实际结果:重写代码以使用线程后,客户端将无法连接到服务器。我得到的最远的是建立连接,但未能创建新帐户,因为用户输入的 Account-Date 可能没有存储在 AccountDataBase ...
如果您已经做到了这一步,您可能需要查看我编写的其他类的代码。我只是没有发布它们,因为 Stackoverflow 告诉我不要发布整个文件......如果您需要更多代码,请随时告诉我!
解决方案
像这样
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?
}
}
推荐阅读
- wordpress - apply_filters 不会替换默认小部件中的文本
- pip - 关于 Jupyter 安装的冲突消息:已安装 snap "jupyter",请参阅 'snap help refresh',jupyter: command not found
- gulp - gulp sass 未写入目标目录
- python - 如何在odoo中确认销售订单时自动创建发票和自动验证发票
- python - 列出 NX Open 包中的所有模块/子包
- tensorflow - 在 keras_tuner 中使用随机搜索
- java - 在使用 java 的通道 plugins.flutter.io/path_provider 上找不到方法 getApplicationSupportDirectory 的实现(不使用 kotlin)
- python - 填充两个矩形之间的区域
- c# - C#:如何使用循环创建新的结构对象
- excel - 在指定日期范围内将 Outlook 电子邮件从最旧到最新导入 Excel