【发布时间】:2014-02-22 16:34:53
【问题描述】:
我是一名学生,正在尝试更多地了解 Java 开发,目前正在使用 swing 创建一个简单的客户端/服务器 IM 应用程序。
让我试着解释一下我遇到的问题:
Login 类在启动时运行,在通过服务器成功验证(工作正常)后,ClientChat 类被实例化。
ClientChat 创建一个新的 JFrame,与服务器建立新连接并创建新的 I/O 流。所有这些背景材料都可以正常工作,但新框架完全是空白的。
如果我在没有登录类的情况下运行应用程序(即直接运行 ClientChat),则不会出现此问题。
到目前为止不成功的方法:
- 使用 frame.pack()。
- 使用 frame.validate()。
- 将 Login 的 JFrame 传递到 ClientChat 并简单地切换面板而不是创建新框架。
来自登录():
panel.add(userLabel);
panel.add(passLabel);
panel.add(userEntry);
panel.add(passEntry);
panel.add(button);
frame.add(panel, BorderLayout.NORTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Chat Room Authentication");
frame.setSize(300, 120);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
...
frame.setVisible(false);
ClientChat clientChat = new ClientChat(serverIP);
clientChat.start();
来自 ClientChat():
userText = new JTextField();
chatWindow = new JTextArea();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Logged in as "+user.toUpperCase());
frame.add(userText, BorderLayout.SOUTH);
frame.add(new JScrollPane(chatWindow), BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
【问题讨论】:
标签: java multithreading swing concurrency