您好我正在创建一个聊天应用程序,我在JList中有一个连接到mysql数据库的联系人列表。这是我的联系人列表代码;
if (evt.getClickCount() == 2) {
String userID = lbluserID.getText();
String selectedContact = jList1.getSelectedValue().toString();
ChatClient chatClientObject = new ChatClient(selectedContact, userID);
ChatClient.runchatClient(selectedContact, userID);
}
我遇到的问题是,当我点击某个联系人时,它会打开该联系人的聊天客户端,但如果我再次点击联系人列表中的联系人,则会打开一个新的聊天客户端。我该如何解决这个问题,以便为每个用户使用相同的聊天客户端实例。
答案 0 :(得分:0)
您必须监视打开的窗口(如@ Code-Guru的评论中所述),或者能够在运行时检查窗口是否打开。尝试像
这样的东西if (evt.getClickCount() == 2) {
String userID = lbluserID.getText();
String selectedContact = jList1.getSelectedValue().toString();
ChatClient chatClientObject = new ChatClient(selectedContact, userID);
if (!chatClientObject.isOpen())
ChatClient.runchatClient(selectedContact, userID);
}
或静态方法
if (evt.getClickCount() == 2) {
String userID = lbluserID.getText();
String selectedContact = jList1.getSelectedValue().toString();
ChatClient chatClientObject = new ChatClient(selectedContact, userID);
if (ChatClient.isChatClientOpen(chatClientObject))
ChatClient.runchatClient(selectedContact, userID);
}
您可能希望能够在创建新实例之前进行检查,可能仅基于您的2个字符串。至于实施,如果不知道你的程序结构如何,很难说。您可以保留一些打开的窗口列表,也可以尝试在运行时获取窗口并解释结果。
由于不了解你的大局而带来的风险,我建议使runchatClient
方法非静态。以这种方式使用:
ChatClient chatClientObject = new ChatClient(selectedContact, userID);
chatClientObject.run();
或者至少不要让静态调用ChatClient.runchatClient
再次向其提供参数,而是使用
ChatClient.runchatClient(ChatClient chatClientObject);