Update JList

Status
Nicht offen für weitere Antworten.

Extractor

Aktives Mitglied
Hallo!

Ich instanziere im c-tor eine JList.

Code:
String[] user = server.getUserlist();
	    userlist = new JList(user);
            JScrollPane scrollerUserList = new JScrollPane();
            scrollerUserList.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            scrollerUserList.getViewport().setView(userlist);
	    getContentPane().add(scrollerUserList, BorderLayout.EAST);


Nun habe ich außerhalb des c-tors eine Methode "receiveMessage". In dieser Methode parse ich einen String.
Wenn nun eine bestimmte Bedingung erfüllt ist, möchte ich die JList updaten bzw. neu instanzieren.


Wie kann ich das machen? Muss ich das Panel komplett neu instanzieren, oder geht das irgendwie einfacher?


Code:
public void receiveMessage{
if(....){
    //UpdateUserList
}
}


Kann mir da jemand helfen?


Gruß Jan
 
B

Beni

Gast
Guck dir das ListModel an. Wenn du ein javax.swing.DefaultListModel anstelle eines Arrays verwendest, geht das mit dem update ganz einfach :wink:
 

Extractor

Aktives Mitglied
Hallo!

Wie bekomme ich denn ein String[]-Array in das ListModell?

So geht es nicht: (steht im c-tor)

Code:
//UserList
            DefaultListModel listModell = new DefaultListModel();
            listModell.addElement(server.getUserlist());    //liefert ein String[]
	    userlist = new JList (listModell);
            
            JScrollPane scrollerUserList = new JScrollPane();
            scrollerUserList.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            scrollerUserList.getViewport().setView(userlist);
	    getContentPane().add(scrollerUserList, BorderLayout.EAST);



Und wie mache ich dann das Update?


Schonmal vielen Dank!


Gruß Jan
 

Xandro

Bekanntes Mitglied
Moin,

hinzufügen des Arrays:

Code:
DefaultListModel dlm = new DefaultListModel();
String[] userlist = server.getUserlist();
for(int i = 0; i < userlist.length(); i++)
{
   dlm.addElement(userlist[i]);
}

Für das Update der JList dürfte es dann reichen,
das Model zuzuweisen:

Code:
jList.setListModel(dlm);

Geht aber vielleicht noch einfacher mit dem Update...
 

Extractor

Aktives Mitglied
Hallo!

Schonmal vielen Dank!

Aber der Compiler kennt setListModel() nicht.

Code:
dlm = new DefaultListModel(); 
            String[] user = server.getUserlist(); 
            for(int i = 0; i < user.length; i++) 
            { 
               dlm.addElement(user[i]); 
            } 
            userlist = new JList ();
            userlist.setListModel(dlm);             //Kennt der Compiler nicht!!!
            JScrollPane scrollerUserList = new JScrollPane();
            scrollerUserList.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            scrollerUserList.getViewport().setView(userlist);
	    getContentPane().add(scrollerUserList, BorderLayout.EAST);

Gruß Jan
 

Extractor

Aktives Mitglied
Hallo!

Also muss ich jetzt in der receiveMessage() Methode, welche sich außerhalb des c-tors befindet nur
userlist.setModel(dlm); aufrufen?

Irgendwie geht das noch nicht. Die JList in meiner GUI wird nicht geupdated.
Ich hab mir ma System.out.println(userlist.getModel()); ausgeben lassen. Dort stehen die Strings drin. Aber grafisch in der GUI ist noch kein Update sichtbar.


Code:
public void receiveMessage(){
if (....){
    userlist.setModel(dlm);  
}
}

Gruß Jan
 
B

Beni

Gast
Nein, du musst die neuen Strings (in receiveMessage) dem Model hinzufügen. Das DefaultListModel hat nicht umsonst Methoden wie "addElement" :wink:
Du kannst dort auch alte Strings entfernen, oder gleich ein ganz neues Model machen und der JList übergeben.

Wenn das alles nie einen Effekt hat: bist du sicher, dass du nicht mehrere Instanzen der JList umherschwirren hast? Es nützt nichts, wenn eine unsichtbare JList aktualisiert wird...
 

Extractor

Aktives Mitglied
Hallo!

Also ich habe jetz folgendes in die Methode receiveMessage() geschrieben:

Code:
//UserList aktualisieren
                        dlm = new DefaultListModel(); 
                        String[] user = server.getUserlist(); 
                        for(int i = 0; i < user.length; i++) 
                        { 
                           dlm.addElement(user[i]); 
                        } 
                        userlist.setModel(dlm);



Ich habe auch nur eine JList-Instanz.


Und es passiert immer noch nichts in der GUI.

Seltsam!? Warum funzt das noch nicht?


Gruß Jan
 
B

Beni

Gast
Lässt sich ohne weiteren Code nicht sagen, aber hast du Beweise für "Ich habe auch nur eine JList-Instanz."? In 99% aller Fälle ist genau dieser Fehler für solches Verhalten verantwortlich.
 

Extractor

Aktives Mitglied
Also im c-tor erzeuge ich EINE JList:

Code:
//UserList
            dlm = new DefaultListModel(); 
            String[] user = server.getUserlist(); 
            for(int i = 0; i < user.length; i++) 
            { 
               dlm.addElement(user[i]); 
            } 
            userlist = new JList ();
            userlist.setModel(dlm);
            JScrollPane scrollerUserList = new JScrollPane();
            scrollerUserList.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            scrollerUserList.getViewport().setView(userlist);
	    getContentPane().add(scrollerUserList, BorderLayout.EAST);



Wenn nun eine Bedingung erfüllt ist, erzeuge ich ein Update:

Code:
//UserList aktualisieren
                        dlm = new DefaultListModel(); 
                        String[] user = server.getUserlist(); 
                        for(int i = 0; i < user.length; i++) 
                        { 
                           dlm.addElement(user[i]); 
                        } 
                        userlist.setModel(dlm);


Das ganze ist eine Art Chat. Wenn ich nun mehrer Chat-Fenster starte, muss jedem Chat-Fenster gesagt werden, dass ein neuer Client gestartet wurde und somit die UserListe updaten

In jedem Client gibt es die Methode receiceMessage(). Wenn nun der Server sagt: "Neuer Client" soll die UserList upgedated werden.


Schonmal vielen Dank!

Gruß Jan
 
B

Beni

Gast
Der Code den du hier zeigst sieht IMHO gut aus, der Fehler wird irgendwo "dazwischen" liegen.
Mach ein KSKB (ein kleines kompilierbares und ausführbares Beispiel).

Übrigens: Beweis dass es funktionieren sollte:
Code:
package forum;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Beispiel extends JFrame{
    private JList list;
    private DefaultListModel dlm = new DefaultListModel();
    
    public static void main( String[] args ) {
        new Beispiel().setVisible( true );
    }
    
    public Beispiel(){
        list = new JList( dlm );
        JButton button = new JButton( "Test" );
        
        getContentPane().add( new JScrollPane( list ), BorderLayout.CENTER );
        getContentPane().add( button, BorderLayout.SOUTH );
        
        button.addActionListener( new ActionListener(){
            public void actionPerformed( ActionEvent e ) {
                update();
            }
        });
        
        pack();
        setDefaultCloseOperation( EXIT_ON_CLOSE );
    }
    
    public void update(){
        dlm.addElement( (dlm.size()+1) + " Element " + Math.random() );
    }
}

Edit: wird dein Konstruktor auch nur einmal ausgeführt? Mit einem "System.out.println" lässt sich das schnell prüfen (es sollte nur eine Ausgabe gemacht werden).
 

Extractor

Aktives Mitglied
Hallo!

Habs jetzt hinbekommen!

Bin von dem DefaultListModel wieder zum String [] gewechselt.

Und mit dem Aufruf von...

Code:
userlist.setListData(server.getUserlist());


...mache ich mein Update.


Vielen Dank.



Gruß Jan
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
E Mysql Update wenn es nicht existiert insert Java Basics - Anfänger-Themen 14
G Konstruktor und update Java Basics - Anfänger-Themen 4
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
S Lost-Update Semaphore Java Basics - Anfänger-Themen 6
K Schlüsselworte Nach Java update findet mdb Datei nicht Java Basics - Anfänger-Themen 6
M Methodenaufruf über SQL UPDATE Java Basics - Anfänger-Themen 8
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
J fehler nach windows update Java Basics - Anfänger-Themen 44
Y Observer update Java Basics - Anfänger-Themen 3
G Threads Konstantes Update Java Basics - Anfänger-Themen 1
X Eventservice Probleme nach Update Java Basics - Anfänger-Themen 0
B VAriables update in for-Schelifen Java Basics - Anfänger-Themen 3
L Jar aus Jar Starten lassen (Update Tool) Java Basics - Anfänger-Themen 6
P Update System Java Basics - Anfänger-Themen 16
R Nach Ubuntu-Update: Konsole spuckt bei neu Kompilierten Programmen Fehler aus (BlueJ)(Ubuntu12.04) Java Basics - Anfänger-Themen 11
L Auf herunterfahren des PCs reagieren und Datensatz update machen Java Basics - Anfänger-Themen 15
K Threads jProgressBar update Java Basics - Anfänger-Themen 14
Gugelhupf JDK installieren Fehlermeldung 1336 - Java SDK 7 Update 5 x64 Java Basics - Anfänger-Themen 4
A JDK installieren Java update - neu installieren? Java Basics - Anfänger-Themen 7
R JDK installieren Nach Update auf java 1.7 Connection refused Java Basics - Anfänger-Themen 9
E Programm - Update via Internet? Java Basics - Anfänger-Themen 5
B JDK installieren Java SE Development Kit 6 Update 25 Java Basics - Anfänger-Themen 5
M Update-Ticker... String in Textdatei schreiben und auslesen Java Basics - Anfänger-Themen 5
S MVC Prinzip - update() ? Java Basics - Anfänger-Themen 2
B Problem mit prepareStatement UPDATE Java Basics - Anfänger-Themen 2
M Serializable - Bei Update ältere Daten importieren Java Basics - Anfänger-Themen 14
C JAVA - Einstieg mit Eclipse - Update Sites und Ähnliches Java Basics - Anfänger-Themen 6
S JTree, Problem mit View Update Java Basics - Anfänger-Themen 2
L Java Persistence API - Update Befehl? Java Basics - Anfänger-Themen 5
A update/draw schleife Java Basics - Anfänger-Themen 5
S update wird nicht aufgerufen Java Basics - Anfänger-Themen 9
G JFreeChart und das Update(was nicht klappt). Java Basics - Anfänger-Themen 3
A label update Java Basics - Anfänger-Themen 10
Y JDK 6 Update 5 with Java EE? Java Basics - Anfänger-Themen 2
M Java SQL-Update Java Basics - Anfänger-Themen 6
A per "update" ein Bild Strich für Strich "male Java Basics - Anfänger-Themen 9
S Ein Update System programmieren Java Basics - Anfänger-Themen 27
P Zeichenprogramm-->update() aushebeln Java Basics - Anfänger-Themen 11
S SQL UPDATE in Java "wie schreiben"? Java Basics - Anfänger-Themen 6
J Problem bei Update auf Datenbank Java Basics - Anfänger-Themen 2
K Observer Observable update() . Java Basics - Anfänger-Themen 13
R JRE 1.5.0 Update 7 Install erkennt nicht Firefox/Netscape Java Basics - Anfänger-Themen 3
M [SOLVED]update() bei MVC Java Basics - Anfänger-Themen 4
M Datenbankabfrage mit UPDATE Java Basics - Anfänger-Themen 4
M Unterschied zwischen J2SE 5.0 Update x und J2SE 1.4.x Java Basics - Anfänger-Themen 4
N Array aus JCheckBox? 1000 if's UPDATE: Spaltennamen auslesen Java Basics - Anfänger-Themen 12
G Update auf Datenbankspalte vom Typ Timestamp mit aktu. Datum Java Basics - Anfänger-Themen 3
G Observable/Observer update wird nicht ausgeführt Java Basics - Anfänger-Themen 9
richis-fragen JList Zeilen-Index währen DropTarget auswerfen. Java Basics - Anfänger-Themen 3
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
Soloeco JList/DefaultListModel: Wie kann ich ein Panel hinzufügen? Java Basics - Anfänger-Themen 1
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
D JList ListSelectionEvent entfernen? Java Basics - Anfänger-Themen 13
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
S Export aus JList Java Basics - Anfänger-Themen 6
M Erste Schritte JList einträge Java Basics - Anfänger-Themen 1
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
M Erste Schritte Auswahl in einer JList Java Basics - Anfänger-Themen 2
P JList, aus selectedValue bestimmten Wert aus Containerklasse auslesen Java Basics - Anfänger-Themen 4
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
J Element zu jList hinzufügen NullPointerExcepetion Java Basics - Anfänger-Themen 2
S jList --> Array einfügen und Liste löschen Java Basics - Anfänger-Themen 5
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
I in listFiles() oder JList Dateiendungen entfernen Java Basics - Anfänger-Themen 14
N Erste Schritte MySQL Tabelle in JList darstellen Java Basics - Anfänger-Themen 1
O JList aktualisieren während Dateieinlesung Java Basics - Anfänger-Themen 4
B JFileChooser und JList Java Basics - Anfänger-Themen 7
OnDemand Enumeration <> JList Java Basics - Anfänger-Themen 5
P Mehrfachauswahl in einer JList Java Basics - Anfänger-Themen 2
A JList Elemente in ein andres JList Adden Java Basics - Anfänger-Themen 5
C .txt und Jlist Java Basics - Anfänger-Themen 10
J Daten in eine JList einfügen Java Basics - Anfänger-Themen 6
A JList / toString modify Java Basics - Anfänger-Themen 2
K jlist an text anpassen Java Basics - Anfänger-Themen 3
D Erste Schritte JList + Checkbox Java Basics - Anfänger-Themen 5
I kein zugriff auf jList oder Textfield Java Basics - Anfänger-Themen 2
A JList bearbeiten Java Basics - Anfänger-Themen 2
M Index einer JList ausgeben Java Basics - Anfänger-Themen 4
M Inhalt/Wert aus einer JList ablesen Java Basics - Anfänger-Themen 5
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
S ListModel - Anzeige im JList Java Basics - Anfänger-Themen 4
H JList Java Basics - Anfänger-Themen 2
G JList Objekte richtig anzeigen in JDK 6 Java Basics - Anfänger-Themen 5
U JList Java Basics - Anfänger-Themen 6
L HashMap zu JList Java Basics - Anfänger-Themen 6
C Input/Output Inhalte von ArrayList und JList in Datei schreiben Java Basics - Anfänger-Themen 5
M Jlist Elemente hinzufügen Java Basics - Anfänger-Themen 2
F Koordinaten JList darstellen Java Basics - Anfänger-Themen 4
M BeanBinding Jlist an Jlabel Java Basics - Anfänger-Themen 2
M GUI JList - Objekte listen u. Feld anzeigen? Java Basics - Anfänger-Themen 16
E JList GUI aktualisieren? Java Basics - Anfänger-Themen 3
JAVAnnik JList Auswahl Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben