如何打开一个类的运行实例

时间:2014-05-15 23:11:21

标签: java chat instance

您好我正在创建一个聊天应用程序,我在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);
}

我遇到的问题是,当我点击某个联系人时,它会打开该联系人的聊天客户端,但如果我再次点击联系人列表中的联系人,则会打开一个新的聊天客户端。我该如何解决这个问题,以便为每个用户使用相同的聊天客户端实例。

1 个答案:

答案 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);