【问题标题】:Match element with specific element not working JList ActionListener将元素与特定元素匹配不工作 JList ActionListener
【发布时间】:2016-07-20 01:32:16
【问题描述】:

我正在开发一个程序,该程序需要一组联系人,并且我正在尝试返回一个整数,表示在线人数。我已经实现了一个名为刷新的按钮。我按下 JFrame 上的“刷新”按钮,它将刷新 JLabel onlineCountNum,它最初是一个空字符串。按刷新后,它显示 1 以包含在线用户。但是,当我登录另一个用户并按下刷新按钮时,它不会增加,而是为该用户保持在 1。 JList listContacts 具有名称或名称(在线)的元素。我试图计算其中有多少人有名字(在线)。如果用户是服务器上唯一的用户,则结果应显示为 1。如果服务器上有两个人,它应该为两个人显示 2,并且两个人都会在窗格中看到另一个人作为名称(在线)。

private JLabel onlineCountNum;     //label gets refreshed by button
private JLabel onlineCountText;    //"Online Count: " label
private JButton onlineCountUpdate; //refresh button

onlineCountText = new JLabel("Online Count: ");
onlineCountNum = new JLabel("ERROR");
onlineCountUpdate = new JButton("Refresh");
onlineCountNum.setText("");

onlineCountUpdate.addActionListener(new MyButtonListener6());

class MyButtonListener6 implements ActionListener{
    public void actionPerformed(ActionEvent e){
        int count = 1;
        ListModel list = listContacts.getModel();
        for(int i = 0; i < list.getSize(); i++){
            if(list.getElementAt(i).equals(list.getElementAt(i)+"(Online)")){ //possible source of error
                count++;
            }
        }
        onlineCountNum.setText(String.valueOf(count));
    }

}

【问题讨论】:

    标签: java swing actionlistener jlist


    【解决方案1】:
    if(list.getElementAt(i).equals(list.getElementAt(i)+"(Online)"))
    

    是的,这错误的来源...

    现在,假设:

    list.getElementAt(i) == "someName(Online)"
    

    您在 if 语句中检查的是:

    list.getElementAt(i) == list.getElementAt(i)+"(Online)"
    

    这就像检查:

    "someName(Online)" == "someName(Online)(Online)"
    

    所以它总是返回 false。


    你要做的是:

    if(list.getElementAt(i).endsWith("(Online)"))
    

    【讨论】:

    • 我相应地编辑了我的代码,并且在编译时出现了这个错误,找不到符号。它指的是 .endsWith 方法。
    • 其实我发现了我的错误。我忘了指定 JList 的类型。但是,您的代码仍然有效!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2016-06-25
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多