2016-07-20 6 views
0

Я работаю над программой, которая принимает массив контактов, и я пытаюсь вернуть целое число людей в сети. У меня уже есть кнопка с именем refresh, которая реализована. Я нажимаю кнопку «Обновить» на JFrame и обновляет JLabel onlineCountNum, который сначала является пустой строкой. После нажатия обновления отображается 1, чтобы включить пользователя, который был в сети. Однако, когда я вхожу в систему с другим пользователем и нажал кнопку обновления, он не увеличивается, а остается для этого пользователя 1. Список JListContacts имеет элементы с именем или именем (в сети). Я пытаюсь подсчитать, сколько из них имеет имя (Online). Если пользователь является единственным на сервере, в результате он должен показать 1. Если на сервере есть два человека, он должен показывать 2 для обоих людей, и оба будут видеть другого человека как имя (Online) на панели.Элемент соответствия с определенным элементом, не работающим JList ActionListener

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

} 

ответ

2
if(list.getElementAt(i).equals(list.getElementAt(i)+"(Online)")) 

Да, это является источником ошибки ...

Теперь предположим, что:

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

Что вы проверить, в, если заявление, является:

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

Это как проверка:

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

Поэтому он всегда будет возвращать false.


То, что вы должны сделать, это:

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

Я отредактировал мой код, соответственно, и я представил с этой ошибкой, не может найти символ, при компиляции. Он ссылается на метод .endsWith. – whuang

+0

Собственно, я нашел свою ошибку. Я забыл указать тип JList. Однако ваш код все еще работает! Благодаря! – whuang