首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打开正在运行的类实例

如何打开正在运行的类实例
EN

Stack Overflow用户
提问于 2014-05-16 07:11:21
回答 1查看 58关注 0票数 0

嗨,我正在创建一个聊天应用程序,我有一个联系人列表中的JList,这是连接到mysql数据库。这是我的联系人列表的代码;

代码语言:javascript
复制
if (evt.getClickCount() == 2) {
    String userID = lbluserID.getText();
    String selectedContact = jList1.getSelectedValue().toString();
    ChatClient chatClientObject = new ChatClient(selectedContact, userID);  
    ChatClient.runchatClient(selectedContact, userID);
}

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

EN

回答 1

Stack Overflow用户

发布于 2014-05-16 10:20:04

您必须监视打开的窗口(如@Code-Guru的评论中所述),或者能够在运行时检查窗口是否打开。试试像这样的东西

代码语言:javascript
复制
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);
}

或者是静态方法

代码语言:javascript
复制
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方法设置为非静态的。用法如下:

代码语言:javascript
复制
ChatClient chatClientObject = new ChatClient(selectedContact, userID);
chatClientObject.run();

或者,至少不要让静态调用ChatClient.runchatClient再次将参数传递给它,而是使用

代码语言:javascript
复制
ChatClient.runchatClient(ChatClient chatClientObject);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23690203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档