JList Refresh

Status
Nicht offen für weitere Antworten.

deichblach

Mitglied
Hi,
Ich habe folgendes Problem:
Ich will einen Chat mit Userliste machen, die Nicknames werden alle auf dem Server in einem Vector gespeichert, und allen usern geschickt falls sie sich verändert. Der Vector wird dann beim client in einer JList dagestellt. Jetzt habe ich allerdings das problem, das die Liste nicht verändert. Das heißt wenn ich jlist.setListData(meinVector) aufrufe passiert auf der Oberfläche nichts, die alte Liste bleibt angezeigt. Wenn ich jetzt allerdings einen neuen Client starte, zeigt er eine andere JList an als der erste Client:
JList 1. Client
User1
JList 2. Client
User 1
User 2
und das zur gleichen Zeit obwohl die Liste von User1 == der Liste von User2 sein muss, da der Vector der liste ja vom Server empfangen wurde.

Vielleicht kann mir jemand von euch helfen, wie ich dieses Problem in den Griff bekomme, ich weiß inzwischen keinen rat mehr.

Gruß deichblach
 

Illuvatar

Top Contributor
Bei mir funktioniert JList.setData (Vector) perfekt. ???:L
Prüfe mal, ob die Daten im Vektor stimmen bzw., ob Client 1 wirklich eine aktualisierte Liste mit Client2 empfängt.

PfM
 

deichblach

Mitglied
habe ich gerade gemacht, irgendwie empfängt nur der letzte Client die aktuelle liste obwohl der Server allen die aktuellste Liste schickt, der Server sendet korrekt.
ich weiß irgendwie auch nicht mehr weiter...
 

deichblach

Mitglied
vielleicht hilft jemanden ja der Quellcode des Clienten.
Code:
Object sobject=null;;
public amSlauschen()
{
	super("AmServerLauschen");
}
public void run()
{
	try
	{
		String msg;
		while(true)
		{
			sobject=null;
			sobject=DeichClient.in.readObject();
			if(sobject instanceof String)
			{
                                                        //Behandlung von Strings
			}
			else if(sobject instanceof Vector)
			{
			    ClientFrame.liste.setListData((Vector) sobject);
			}
		}
	}
	catch(Exception e)
	{
		System.out.println("Fehler beim Lauschen: "+e.toString());
	}
}
 

Illuvatar

Top Contributor
Wenn sich der zweite Client beim Server anmeldet, müsste doch der Server seinen Vector aktualisieren und an alle Clients (also Client 1) schicken. Machst du das so oder ganz anders?
 

deichblach

Mitglied
genau so mache ich das. deswegen weiß ich auch nicht warum das nicht funzt.
Code:
Object object=in.readObject();
if(object instanceof String)
{
    line=object.toString();
    if(firsttime)
    {
        for(int i=0; i<line.length();i++)
        {
                if(line.charAt(i)==32)
                {
                    name=(String)line.subSequence(1,i);
                    DeichServer.namen.addElement(name);
                    DeichServer.Broadcast("NeueListe"+name+"in");
                    firsttime=false;
                    break;
                }
        }
    }
}
und..
Code:
public static void Broadcast(String msg)
{
    System.out.println(msg);
    ServerLauschen clien;
    for(int i=0;i<alle.size();i++)
    {
        clien=(ServerLauschen) alle.elementAt(i);
        try
        {
            if(msg.startsWith("NeueListe"))
            {
                boolean in;
                String nick;
                if(msg.endsWith("out"))
                {	
                    nick=(String)msg.subSequence(9,msg.length()-3);
                    in=false;
                    clien.out.writeObject("["+nick+" hat den Chat verlasen]");
                }
                else
                {
                    nick=(String)msg.subSequence(9,msg.length()-2);
                    in=true;
                    clien.out.writeObject("["+nick+" betritt den Chat]");
                }
                System.out.println(namen.toString());
                clien.out.writeObject(namen);
            }
            else
                clien.out.writeObject(msg);
        }
        catch(Exception e)
        {
            System.err.println("hmmm");
        }
    }
}
wobei "namen" der Vector mit den Nicknames ist, welcher nachher beim Clienten in der JListe angezeigt werden soll
 

deichblach

Mitglied
erstmal danke,
aber ich würde es mir wohl gerne bequem machen, deswegen habe ich auch n Vector benutzt. Ich will nicht wenn irgend einer ausn channel rausgeht erstmal suchen wer überhaupt weg ist und dann in diesem ListModel die neuen daten eintragen.
Geht das denn nicht vielleicht auch ohne? Das Problem liegt ja irgendwo bei dem Empfangen, denn die Daten wurde ja richtig gesendet, aber irgendwie falsch empfangen.
 

deichblach

Mitglied
???
guck dir mal den ersten quelltext an.
DeichServer.namen.addElement(name);
*G*
der remove Befehl steht halt nur beim schließen der verbindung, deswegen habe ich den garnicht aufgeführt
 

deichblach

Mitglied
ich sende einen Vector mit all meinen Namen in der Liste, falls sich etwas verändert, vom Server zu allen Clienten.
Der Client übernimmt einfach den Vector mit liste.setListData(meinVector).
Wenn ich jetzt das List Modell nehmen würde müsste ich jedesmal beim client suchen ob sich etwas verändert hat und wenn ja, was.
Ich weiß nicht, aber ich finde die ist ein bißchen kompliziert, aber wenn es nicht anders geht dann muss ich das wohl so machen.
 
B

Beni

Gast
ach so...
*jetzt besser versteh*

Kannst Du mir sagen ob diese List gefüllt wird?
Code:
package testing;

import javax.swing.*;
import java.util.*;

public class ListTest3 extends JFrame {
  private JList list;
  private Vector elements = new Vector();

  public ListTest3() {
    list = new JList( elements );
    getContentPane().add( new JScrollPane( list ));
    setBounds( 10, 10, 300, 300 );
    setDefaultCloseOperation( EXIT_ON_CLOSE );

    setVisible( true );

    for( int i = 0; i < 120 ; i++ ){
      try {
        Thread.sleep( 1000 );
      } catch (InterruptedException ex) {}

      elements.add( String.valueOf( i ) + ": " + Math.random());
      System.out.println( i + ": neue Daten" );
      list.setListData( elements );
    }
  }
}

Wenn nein: Dann verstehe ich die Welt nicht mehr, weil das bei mir funktioniert
Wenn ja: Dann ist das mit der Liste wahrscheinlich nur ein Effekt, das Problem aber an einer anderen Stelle.

Gruss Beni
 

deichblach

Mitglied
hi beni,
habs ausprobiert. irgendwie funzt das.hmmmm...dann weiß ich auch nicht woran es bei mir liegt, naja dann mache ich das ganze halt anders :(

trotzdem danke*g*
gruß deichi
 
B

Beni

Gast
Versuch mal rauszufinden, ob der Vektor überhaupt bei der Liste ankommt (z.b: kurz JList.setListData überschreiben und ein println reinhacken).

Und gib aus, ob da tatsächlich neue Elemente drin sind (manchmal sieht auch einfacher Code richtig aus, aber funktioniert dennoch nicht *hab da böse Erfahrungen*)

mfg Beni
 
C

Coleeen

Gast
Beni, wie meinst das einen println reinhacken? Kannst schnell zeigen, glaub eben dass meine JList den Vector gar nich bekommt.

Code:
public class ClassA extends JFrame implements ActionListener{

private Vector vec = null;
private JList liste = null;

      public ClassA(){
          ........
           //da wird ein tabbedPane erstellt
          neuTab("Tab1");

           vec = new Vector();
         ........

      }

      neuTab(String title){
           ......
             liste = new JList();
            //usw was noch alles dazugehört
            JButton submit = new JButton("Submit");
            ....
      }

       public void ActionPerformed(ActionEvent e){
            if(e.getActionCommand().equals("Submit")){
                int i; 
                for(i = 4; i!=0; i--){
                    vec.addElement("Zahl "+i);
               }
               //hier wollt ich den gefüllten vector der liste übergeben
               //Wenn ich hier vorher println mach is der vector auch gefüllt
               liste.setListData(vec);      
           }
       }
}

hab den code da nur schnell als bsp geschrieben, kann scho noch einige fehler haben... mir geht es nur um das list.setListData(vec). da macht er keinen set sondern gibt mir ne nullpointerexception aus. jou vielleicht mach ich das ja auch falsch, aber dann weiss i echt nich an was es mehr liegen könnt.

gruss coleen die madkuh
 
B

Beni

Gast
Was änliches wie Du offenbar gemacht hast (kommt auf dasselbe Resultat)
//hier wollt ich den gefüllten vector der liste übergeben
//Wenn ich hier vorher println mach is der vector auch gefüllt
liste.setListData(vec);

Du sagst, du hast eine NullPointerException, da der Vector nicht null ist (weil er sonst nicht gefüllt wäre), bleibt irgendwie nur noch liste ???

Poste mal die Ausgabe dieser Exception.
 
C

Coleeen

Gast
Wieso ich eine NullPointerException hab weiss ich ja nicht *g* sons hät ich was dagegen unternommen. Den Vector habe ich ausgeprintet und er war so gefülllt wie ichs vor hatte. was nicht geht is nur das aktuallisieren mit setListData. die liste will da nich mitspielen grml..



java.lang.NullPointerException
at ch.ag.gui.AdminPanel.searchUser(AdminPanel.java:354)
at ch.ag.gui.Listener.actionPerformed(Listener.java:61)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:216)
at java.awt.Component.processMouseEvent(Component.java:3717)
at java.awt.Component.processEvent(Component.java:3546)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2595)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
at java.awt.Container.dispatchEventImpl(Container.java:1200)
at java.awt.Window.dispatchEventImpl(Window.java:912)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)
at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)


:roll:
 
B

Beni

Gast
Hm *grübel*, mal die Suche ausdehnen.

Hier gehts wohl weiter:
at ch.ag.gui.AdminPanel.searchUser(AdminPanel.java:354)
 
C

Coleeen

Gast
auf dieser Zeile steht eben der setListData befehl
liste.setListData(vec);

ich probier nochmals einige ideen aus. schreib mal mein beispiel da, ganz in ein neues projekt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JList, JTree, JTextarea - Daten"refresh" AWT, Swing, JavaFX & SWT 15
B Jlist füllen AWT, Swing, JavaFX & SWT 4
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
BananenBrötchen Swing Arraylist in jList anzeigen AWT, Swing, JavaFX & SWT 6
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
J JList scrollen AWT, Swing, JavaFX & SWT 3
Neumi5694 Swing JList - Klick abfangen AWT, Swing, JavaFX & SWT 3
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
M Swing JList Auswahl-GUI-Konzept AWT, Swing, JavaFX & SWT 9
C JList: Bestimmte Objekte ausschließen AWT, Swing, JavaFX & SWT 1
F JList aktualisiert nicht AWT, Swing, JavaFX & SWT 24
F JList auffüllen aus Array von Instanzen AWT, Swing, JavaFX & SWT 4
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
F JList bei Windowbuilder AWT, Swing, JavaFX & SWT 8
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
P JList erstellen AWT, Swing, JavaFX & SWT 4
G DefaultListModel für JList AWT, Swing, JavaFX & SWT 2
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
P Übergeben von ListModel an nichtparametrisierte JList AWT, Swing, JavaFX & SWT 8
M Ein Element in mehreren JList selektieren AWT, Swing, JavaFX & SWT 5
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
Nabbit Über JList kein JPopupMenu AWT, Swing, JavaFX & SWT 2
O Swing JList beim Klicken in der GUI erstellen AWT, Swing, JavaFX & SWT 6
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
B Swing Auf JList-Elemente aus einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 1
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
T Swing WindowBuilder: JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
D Swing ArrayList in Jlist/ List oder Array in JList/List AWT, Swing, JavaFX & SWT 5
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
M JList wird angezeigt, JTable (DefaultTableModel) nicht AWT, Swing, JavaFX & SWT 7
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
Q JList Update Problem AWT, Swing, JavaFX & SWT 1
W Sichtbarer Bereich JScrollPane vs. JList AWT, Swing, JavaFX & SWT 3
N AWT Markierte Zeile jList aus mySQL DB löschen AWT, Swing, JavaFX & SWT 2
S JList repaint AWT, Swing, JavaFX & SWT 1
F Swing JTextField in JList (Funktion beibehalten) AWT, Swing, JavaFX & SWT 2
H JList AWT, Swing, JavaFX & SWT 5
B Swing Bild von Webseite herunterladen, diese dann in JList anzeigen. AWT, Swing, JavaFX & SWT 1
B Swing Dynamische JList mit Bildern AWT, Swing, JavaFX & SWT 4
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
S JList Index finden AWT, Swing, JavaFX & SWT 6
3 Swing JList-Inhalt als verschlüsselte Datei schreiben und lesen AWT, Swing, JavaFX & SWT 1
N JComponenten in JList oder doch anders? AWT, Swing, JavaFX & SWT 0
S Swing JList, ArrayList + DefaultModel AWT, Swing, JavaFX & SWT 5
B Tabelleneinträge in JList anzeigen AWT, Swing, JavaFX & SWT 5
P JList/JScroolPane Text verschieben und text wrappen AWT, Swing, JavaFX & SWT 3
D Swing JList keine Selektionsänderung bei "dragged-Maus" AWT, Swing, JavaFX & SWT 4
M JList Model filtern AWT, Swing, JavaFX & SWT 4
K Swing JList - Element richtig hinzufügen AWT, Swing, JavaFX & SWT 4
T Swing Elemente der JList überlappend darstellen AWT, Swing, JavaFX & SWT 5
P Swing JList mit Objekten - Name anzeigen AWT, Swing, JavaFX & SWT 5
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
K Mehrfachselektierungen in einer JList AWT, Swing, JavaFX & SWT 6
L Swing Component alignment innerhalb einer JList AWT, Swing, JavaFX & SWT 3
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
M Accelerator zu JMenuItem des JPopupMenu einer JList AWT, Swing, JavaFX & SWT 2
S Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Element aus JList eines JFileChooser entfernen AWT, Swing, JavaFX & SWT 3
E selektierter Datensatz in JList als String Datentyp AWT, Swing, JavaFX & SWT 23
E selektiertes Element aus JList zurückgeben AWT, Swing, JavaFX & SWT 7
E JList /DefaultListModel mit Datenbank verbinden AWT, Swing, JavaFX & SWT 10
L SQL & Jtable o. JList AWT, Swing, JavaFX & SWT 5
K Swing JList und veränderte CellRenderer AWT, Swing, JavaFX & SWT 8
B JList + ListCellRenderer AWT, Swing, JavaFX & SWT 5
B JList -> Disabled AWT, Swing, JavaFX & SWT 6
J JList, Anzeige aktualisieren AWT, Swing, JavaFX & SWT 7
I Jlist isselectionEmpty AWT, Swing, JavaFX & SWT 4
I Jlist dynamisch aus Datenbank füllen AWT, Swing, JavaFX & SWT 14
R Swing unbegrenzte Anzahl vonEinträgen in JList AWT, Swing, JavaFX & SWT 2
MiMa Dateien aus Ordner in einer JList Ausgeben AWT, Swing, JavaFX & SWT 32
P Elemente einer JList ausgeben AWT, Swing, JavaFX & SWT 11
M JList mit 2-zeiligen Objekten füllen AWT, Swing, JavaFX & SWT 7
S JList mit Einträgen versehen schlägt fehl AWT, Swing, JavaFX & SWT 4
F Swing ArrayList in JList anzeigen und Objekte auswählen AWT, Swing, JavaFX & SWT 2
B JList zeigt Elemente nicht an AWT, Swing, JavaFX & SWT 3
S Fragen zu JList AWT, Swing, JavaFX & SWT 3
B Aktualisierung einer JList AWT, Swing, JavaFX & SWT 5
W JList valueChanges weiterleiten? AWT, Swing, JavaFX & SWT 14
D JButton-Click in JList mit Panels (auf dem der Button ist) AWT, Swing, JavaFX & SWT 6
E Jlist nur mit Klasse? AWT, Swing, JavaFX & SWT 5
D Swing JList <-> AdapterModel <-> Model AWT, Swing, JavaFX & SWT 4
1 JList - Elemente mit rechter Maustaste wählen AWT, Swing, JavaFX & SWT 6
M JList mit DefaultListModel und listener AWT, Swing, JavaFX & SWT 4
B JList nach dem Rendern sortieren AWT, Swing, JavaFX & SWT 3
T Wie ist das "Lookup-Verhalten" von JList, JCombobox änderbar? AWT, Swing, JavaFX & SWT 4
D JList items voneinander trennen AWT, Swing, JavaFX & SWT 10
E Keine Ausgabe von JList bei drücken von Button auf die Konsole AWT, Swing, JavaFX & SWT 7
M gleiches Element in JList mehrmals hintereinander auswählen AWT, Swing, JavaFX & SWT 6
T JList und Objekte AWT, Swing, JavaFX & SWT 7
M Swing JList Item in andere JList während Ausführung AWT, Swing, JavaFX & SWT 4
V JList filtern AWT, Swing, JavaFX & SWT 6
GianaSisters jList nur einmal ein Element anklicken AWT, Swing, JavaFX & SWT 3
TheWhiteShadow JList-Inhalt nach Änderung weg AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben