Ergebnis 1 bis 5 von 5

Thema: [Java] List automatisch scrollen

  1. #1

    [Java] List automatisch scrollen

    Hey ho, ich hätt da mal 'n kleines Problem.

    Und zwar arbeite ich grad inner Schule an 'nem Chat. Und wie das ja bei Chats so ist, scrollt der Messageverlauf automatisch nach unten, sobald eine neue Message eingeht.

    Leider ist unser Lehrer ('n Doktor btw.) so freundlich, dass er uns selber nach der Problemlösung suchen lässt. Seine Standartantwort auf alle Fragen, die man ihm stellt: Google!

    Nun ja, da ich mich hier aber unter kompetenten Leuten glaube, denke ich, dass das kein allzu großes Problem sein sollte.

    Also im Klartext: Wie kann man eine List dazu veranlassen, selbständig mit dem Eingehen einer neuen Message nach unten zu scrollen?

    Cya Unit~

  2. #2
    Erstmal: Habe ich selbst noch nie gemacht, kann also nur raten.
    Interessant zu wissen wäre jedenfalls, was du genau hast, das du scrollen willst. Ich nehme mal an, es wird ein JScrollPane sein. In der Klasse habe ich zwar leider nichts gefunden, mit dem man aus dem Programm heraus scrollen kann, allerdings könnte dieser Workaround klappen:
    Code:
    void scrollToBottom(JScrollPane pane) {
        JScrollBar bar = pane.getVerticalScrollBar();
        bar.setValue(bar.getMaximum());
    }
    Einfach im Handler, der eine neue Nachricht ans unterste Ende der Liste schreibt, diese Methode aufrufen (das ScrollPane solltest du dir halt vorher irgendwo gespeichert haben), und hoffen, dass es klappt. ^^'

    Edit: Boah, komplett zufällig habe ich mehr oder weniger genau das in den Java Tutorials gesehen: How To Use File Choosers.
    Hat zwar ein komplett anderes Thema, aber in der zugehörigen Demo ist ein Log, der ebenfalls automatisch nach unten scrollt. Der Log ist dabei eine JTextArea, die Methode lautet
    log.setCaretPosition(log.getDocument().getLength());

    Geändert von drunken monkey (20.09.2007 um 13:12 Uhr)

  3. #3
    Zitat Zitat von drunken monkey Beitrag anzeigen
    Interessant zu wissen wäre jedenfalls, was du genau hast, das du scrollen willst. Ich nehme mal an, es wird ein JScrollPane sein.
    Nope, es iss 'ne ganz gewöhnliche java.awt.List
    Also die Ausgabe des Messageverlaufs erfolgt in einer solchen. Mit J-Gedöns steht da nichts in Verbindung...

  4. #4
    Zitat Zitat von Unit Nero Beitrag anzeigen
    Nope, es iss 'ne ganz gewöhnliche java.awt.List
    Also die Ausgabe des Messageverlaufs erfolgt in einer solchen. Mit J-Gedöns steht da nichts in Verbindung...
    Ahso, kannte ich gar nicht, die Klasse. o_O (Habe bei "List" nur an java.util.List gedacht.)
    Die Frage ist aber, warum du die denn überhaupt verwendest, schließlich ist Swing ja deutlich komfortabler und dort ginge es sicher einfacher, irgendwohin zu scrollen. Außerdem scheint mir die Klasse auf den ersten Blick für die Aufgabe überhaupt nicht gemacht zu sein, sie ist eher dazu da, damit der User etwas auswählen kann, und nicht etwas angezeigt bekommt.

    Aber wenn du wegen irgendwas doch bei List bleiben willst, probier mal:
    list.select(list.getItemCount() - 1);
    Allerdings steht da extra dabei, dass es keinen ItemEvent erzeugt, also ob's dadurch irgendwas an der Anzeige ändert, weiß ich nicht.

  5. #5
    Zitat Zitat von drunken monkey Beitrag anzeigen
    Aber wenn du wegen irgendwas doch bei List bleiben willst, probier mal:
    list.select(list.getItemCount() - 1);
    Allerdings steht da extra dabei, dass es keinen ItemEvent erzeugt, also ob's dadurch irgendwas an der Anzeige ändert, weiß ich nicht.
    Joa, das klingt schon mal nach etwas mehr, was ich mir vorgestellt hab. Danke erstmal.

    Btw. Der Grund, warum ich die awt.list verwende iss simpel: Wir arbeiten mit VisualCafé und das verwendet eben diese List standardisiert. Ich hab zwar schon einiges an Erfahrung in Java aber alle Klassen kenn ich eben noch nicht, geschweige denn alle ihre Funktionen!

    Also, ich probiers erst mal. Wenn ich deswegen noch was hab, meld ich mich noch mal... Thx!

    Cya Unit~

    Edit: Jo, es funktioniert. Wunderbar, danke. Mit dem Problem hat sich schon meine ganze Klasse rumgeschlagen. Aber das hat sich ja nun geklärt!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •