2016-04-28 21 views
0

findet habe ich den folgenden Code auf die Schaltfläche klicken ausführen:Java: JList nur Indizes im sichtbaren Bereich

while(count<listAmount){ 
     tbiCList.setSelectedIndex(0); 

     String item = JList.getSelectedValue(); 

      String update[] = item.split(", "); 

      //this part removed for sake of post 

     remove(item); 
     count++; 
    } 

Hinweise:

count beginnt als 0, listAmount ist die Menge der Elemente in JList und remove() ist eine Methode, die das ausgewählte Element entfernt.

Das alles funktioniert gut und Dandy, ABER das Problem ist, wählt und entfernt nur die Elemente, die sichtbar sind, wenn die Schaltfläche geklickt wird, und nicht die Elemente, die nach dem Bildlaufbereich sind. Natürlich könnte ich nur noch einmal auf den Knopf klicken und den nächsten Satz von Gegenständen bekommen, aber ich bin ein Programmierer und ich möchte die einfachste Weise, meine Aufgabe abzuschließen.

UPDATE

erkannte ich, dass ich listAmount habe die Einrichtung von LastVisibleIndex();

Mein schlecht bekommen.

Meine Frage jetzt: Wie listAmount jedes Mal abrufen while Befehl aktualisiert?

UPDATE ZUM UPDATE

Weil ich ungeduldig bin, neige ich dazu, diese viel zu tun, so entschuldige ich mich.

Ich habe herausgefunden, wie ich mein Problem beheben kann. Innerhalb der while Schleife fügte ich einfach +1 zur listAmount Variable hinzu und dann, als es mir die NullPointerException gab, fügte ich einen try Block um den while Block hinzu. So ist das Problem behoben.

Antwort

1

Anstatt getSelectedValue() zu verwenden, um eine einzelne Auswahl zu erhalten, können Sie die while-Anweisung entfernen und stattdessen getSelectedValuesList() verwenden, um mehrere Elemente auszuwählen und diese dann zu durchlaufen.

Vergessen Sie nicht, die JavaDoc für andere Optionen zu überprüfen.

Einfüg.Nummer Kommentar:

List<String> selectedItems = myJList.getSelectedValuesList(); 
for (int i = 0; i < selectedItems.size(); i++){ 
    String item = selectedItems.get(i); 
    String update[] = item.split(", "); 
    //this part removed for sake of post 
    //.... 
} 
myJList.removeAll(); 
+0

Als Antwort auf Ihre bearbeiten: Um einen neuen listAmount zu erhalten nur die gleiche Methode verwenden, wie Sie es das erste Mal bekommen verwendet, aber es in Ihrer while-Schleife setzen? – sorifiend

+0

Das Problem dort ist, dass ich die Variable nicht innerhalb der Schleife setzen kann, weil die while-Schleife ** diese Variable verwendet. Aber ich habe tatsächlich herausgefunden, wie es geht. Frage jetzt bearbeiten ... –

+0

Und ich bin mir sicher, dass Ihre Antwort nur helfen kann, aber das Problem ist: Ich muss die Werte einzeln auswählen, sie derselben Zeichenfolge zuweisen, damit ich sie für die SQL-Abfrage verwenden kann. Ich weiß es zu schätzen, dass Sie versuchen, zu helfen! : D –

Verwandte Themen