匹配元素与特定元素不工作 JList ActionListener

Match element with specific element not working JList ActionListener

我正在开发一个需要一组联系人的程序,我正在尝试 return 在线人数的整数。我已经实现了一个名为刷新的按钮。我按下 JFrame 上的 "refresh" 按钮,它将刷新 JLabel onlineCountNum,它最初是一个空字符串。按刷新后,它显示 1 以包括在线用户。但是,当我登录另一个用户并按下刷新按钮时,它不会增加,但会为该用户保持 1。 JList listContacts 包含名称为 name 或 name(Online) 的元素。我正在计算其中有多少人有名字(在线)。如果用户是服务器上的唯一用户,则结果应显示 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));
    }

}
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)"

所以它总是return false。


您需要做的是:

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