[Java] JScrollPane automatische scroll?

Pagina: 1
Acties:

  • Mitt3nz
  • Registratie: Maart 2002
  • Laatst online: 12:56
Hallo,

In mijn applicatie heb ik een JTextArea binnen een JScrollPane waar af en toe een regel tekst aan toegevoegd wordt. Nou is mijn probleem dat zodra de JTextArea "vol" is, de scrollbars van JScrollPane wel netjes verschijnen, maar dat hij niet automatisch verticaal met de tekst meescrollt.

Nou heb ik de search gebruikt en ge-google't, maar daar ben ik niet veel mee opgeschoten. Vaak werd het aanroepen van validate() of revalidate() op de JScrollPane na het toevoegen van een lijn tekst aangeraden, maar dit werkt niet.

Iemand een idee?

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Ik vermoed dat je het met JScrollPane.scrollRectToVisible( Rectangle ) kunt doen.
Je kunt het huidige visible rect opvragen met getVisibleRect. ff ietsjes naar beneden halen en klaar...

  • reskobon
  • Registratie: November 2001
  • Laatst online: 25-12 16:02
Wat je ook kan doen maar is niet zo heel netjes is telkens de pointer onderaan het tekstvak zetten. Hierdoor schuiven je scrollbars vanzelf mee. :)

Leeg


  • Mitt3nz
  • Registratie: Maart 2002
  • Laatst online: 12:56
SWfreak schreef op 07 February 2003 @ 16:09:
Ik vermoed dat je het met JScrollPane.scrollRectToVisible( Rectangle ) kunt doen.
Je kunt het huidige visible rect opvragen met getVisibleRect. ff ietsjes naar beneden halen en klaar...
Ik heb dit geprobeerd:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private JTextArea taMessages;
private JScrollPane statusView;

[.........]

public void addMessage(String msg) {
    taMessages.append(msg + "\n");
    // Visible rect van de JScrollPane
    Rectangle currentRect = statusView.getVisibleRect(); 
    // Nieuwe rectangle 5 pixels (?) lager dan de visible rect van JScrollPane
    Rectangle bla = new Rectangle((new Double(currentRect.getX())).intValue(),
                                  (new Double(currentRect.getY())).intValue() + 5,
                                  (new Double(currentRect.getWidth())).intValue(),
                                  (new Double(currentRect.getHeight())).intValue()); 
    statusView.scrollRectToVisible(bla);
}


Maar dit werkt ook niet, ook niet als ik taMessages.getVisibleRect() gebruik. Iemand anders een ander idee?

[ Voor 41% gewijzigd door Mitt3nz op 07-02-2003 16:49 ]


  • nxt
  • Registratie: November 2001
  • Laatst online: 24-08 15:34

nxt

ik zou 't doen zoals robje suggereerd, tenzij 't een probleem is dat de locatie van de cursor wijzigd natuurlijk ;)
kijk eens naar setCaretPosition

  • Mitt3nz
  • Registratie: Maart 2002
  • Laatst online: 12:56
Bedankt.. dat werkt :)

  • reskobon
  • Registratie: November 2001
  • Laatst online: 25-12 16:02
nxt schreef op 07 February 2003 @ 18:54:
ik zou 't doen zoals robje suggereerd, tenzij 't een probleem is dat de locatie van de cursor wijzigd natuurlijk ;)
kijk eens naar setCaretPosition
Zolang dat tekstvak toch alleen maar voor weergave is dan zet je hem op textveld.setEnabled(false);
Dan zie je die cursor niet eens staan. :) Maar goed deze post was alleen maar een aanvulling want je had mijn manier al gebruikt

Leeg

Pagina: 1