2016-07-20 20 views
0

Ich arbeite an einem Programm, das eine Reihe von Kontakten verwendet, und ich versuche eine Ganzzahl zurückzugeben, wie viele Personen online sind. Ich habe bereits eine Schaltfläche namens Refresh, die implementiert ist. Ich drücke den "Refresh" Knopf auf einem JFrame und es wird zuerst das JLabel OnlineCountNum, welches eine leere Zeichenkette ist, aktualisieren. Nach dem Drücken von Aktualisieren wird 1 angezeigt, um den Benutzer einzubeziehen, der online war. Wenn ich mich jedoch bei einem anderen Benutzer anmelde und die Aktualisierungsschaltfläche drücke, wird er nicht erhöht, sondern bleibt für diesen Benutzer bei 1. Die JList listContacts enthält Elemente mit dem Namen oder dem Namen (Online). Ich versuche zu zählen, wie viele dieser Namen haben (Online). Wenn der Benutzer der einzige Benutzer auf dem Server ist, sollte als Ergebnis 1 angezeigt werden. Wenn zwei Personen auf dem Server sind, sollte für beide Personen 2 angezeigt werden, und beide Personen sehen eine andere Person als Name (Online) in einem Bereich.Übereinstimmungselement mit spezifischem Element funktioniert nicht 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)); 
    } 

} 

Antwort

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

Ja, das ist die Fehlerquelle ...

Nun nehmen wir:

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

Was für Sie überprüfen, in der if-Anweisung ist:

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

Das ist wie Überprüfen:

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

So wird es immer falsch zurückgeben.


Was haben Sie zu tun ist:

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

ich bearbeiten meinen Code entsprechend, und ich bin mit diesem Fehler dargestellt, nicht Symbol finden, beim Kompilieren. Es bezieht sich auf die .endsWith-Methode. – whuang

+0

Eigentlich habe ich meinen Fehler gefunden. Ich habe vergessen, den Typ der JList anzugeben. Ihr Code funktioniert jedoch immer noch! Vielen Dank! – whuang