|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
[JAVA]JscrollPane che si autoaggiorna
C'è un modo pulito per far si che quando il componente all'interno del JScrollPane aumenta di dimensioni la scroll bar anzichè stare in alto sita in basso, cioè che invece di venir visualizzata la parte alta del componente venga visualizzata la parte bassa.
In particolare il mio componente è una JTextArea e vorrei che quando inserisco nuove righe, se ce ne sono troppe tanto da esserci la scrollbar, mi venga visualizzata l'ultima riga inserita. Ora invece compare la scrollbar ma bisogna spostarla a mano per scorrere in giù la textarea. Non so se mi sn spiegato... |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Nov 2002
Messaggi: 262
|
In casi così semplici basta spostare la posizione del cursore alla fine del testo della JTextArea....
class Prova extends JFrame() { JTextArea txt = new JTextArea(); public Prova(String testoIniziale) { super(); txt.setText(testoIniziale); JScrollPane scroll = new JScrollPane(txt); getContentPane(scroll); } public void appendTesto(String txtToAppend) { txt.append(txtToAppend); txt.setCaretPosition(txt.getLength()); } } |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
si ti ringrazio ero arrivato a questa soluzione anke io
![]() |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Ciao, c'ho sbattuto la testa ultimamente su questo problema. Girando su google ho trovato diverse soluzioni, ma più che soluzioni erano tutti trick un po' sporchi.
Tra le sporche, quella più pulita ![]() textArea.setCaretPosition(getDocument().getLength()) mentre quella ufficiale e pulita è questa ((DefaultCaret) textArea.getCaret()).setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE) il problema è che queste due soluzioni non sembrano funzionare in ambiente linux. Io le ho provate solo su windows. Forse il problema è DefaultCaret, magari c'è una classe Caret più specifica che risolve il problema... |
![]() |
![]() |
![]() |
#5 | ||
Member
Iscritto dal: Nov 2002
Messaggi: 262
|
Quote:
il getDocument dovresti fartelo dare dal component text textArea.setCaretPosition(textArea.getDocument().getLength()) Ma textArea.getDocument().getLength() equivale a textArea.getText().getLength() Quote:
Hai provato le istruzioni che ti ho messo nel precedente post? |
||
![]() |
![]() |
![]() |
#6 | ||
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Quote:
![]() Quote:
|
||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:15.