JList dynamisch ändern & Autoscroll in einem JTextArea

steff aka sId

Erfahrenes Mitglied
Hi hab im Moment zwei Probleme.
1. Ich habe einen Client- Server Programm mit .io und .net geschrieben. Jetzt möchte ich das beim Connecten des Clients (dabei wird für jeden Client ein Thread erstellt) der Client + Socket in einen Vector geschrieben wird und dieser Vector dann in eine JList. Genau an diesem Punkt liegt das Problem ich bekomm es einfach nicht hin die JList dynamisch zu ändern. Ich hab schon raus gefunden das ich dann das ListModel von der JList ändern muss aber wie genau das funktioniert weiß ich nicht bzw. glaube ich das ich zwar das ListModel überschrieben habe. Aber ich weiß nicht wie ich jetzt meinen Vector der JList hinzufüge. Zu dem Vector würde ich noch gerne wissen ob der eine toString Methode braucht. Weil irgend was muss die JList ja auch anzeigen können.

2. Problem ist das ich in einem JTextArea ein ScrollPane hinzufgefügt habe und diese ScrollPane sollte automatisch nach unten scrollen wenn der Eintrag größer wird als das Fenster.

Greetz Steff
 
Weiß nicht, ob Deine Frage noch aktuell ist.

Jedenfalls:

Dem ListModel kann man per addItem(Object) - oder war es addElement(Object), musst mal probieren - einfach ein weiteres Element hinzufügen.

Hoffe mal, das hilft weiter!

Gruß

henning-malaysia
 
steff aka sId hat gesagt.:
2. Problem ist das ich in einem JTextArea ein ScrollPane hinzufgefügt habe und diese ScrollPane sollte automatisch nach unten scrollen wenn der Eintrag größer wird als das Fenster.

Greetz Steff

Eigentlich einfach:
Code:
Point point = new Point( 0, (int)(textArea.getSize().getHeight()) );
scrollPane.getViewport().setViewPosition( point );

Deine Frage muss mir entgangen sein. :o
 
Keine Ahnung ob das noch aktuell ist oder jemanden interessiert!

Ich habe das mit der Autoscrollenden TextArea so gemacht, da das andere bei mir, warum auch immer total geflackert hat :confused:


Code:
void autoScroll() {             
        jTextArea.setCaretPosition(jTextArea.getText().length());
    }

Die Methode wird dann immer aufgerufen, wenn ich eine neue Zeile in die TextArea hineinschreibe.

Viele Grüße

Th0r
 
Ich brauch dieses autoscrollen auch gerade und habe den code

Code:
Point point = new Point( 0, (int)(textArea.getSize().getHeight()) );
scrollPane.getViewport().setViewPosition( point )
;

verwendet, das funktioniert problemlos, bis ich einen text in der textarea markiere, dann geht scrollt es nicht mehr automatisch.

Code:
void autoScroll() {             
        jTextArea.setCaretPosition(jTextArea.getText().length());
    }

Der code hingegen funktioniert immer, is nur imo etwas umständlicher, da man das immer schreiben muss und den oberen code genau 1x.

Gibt es vllt ne möglichkeit, dass der obere code immer scrollt, auch nachdem man einen text in der textarea markiert hat?
 
Ich hab das Problem auch öfters, dass ich während des "Programmbetriebs" Listen und andere Dinge nicht ändern konnte. Ich habe das schließlich so gelöst:

list.setVisible(false);
nun die Items der Liste ändern
list.setVisible(true);

ist keine elegante Lösung, da es zu kurzen Flackern kommt, aber es geht :rolleyes:
 
Zurück