2008-11-14 15 views

Odpowiedz

5

Można spróbować:

scrollPane.getViewport().setViewPosition(new Point(0,0)); 

Według Javadocs setViewPosition() zachowuje się tak:

Ustawia współrzędne widoku, które pojawiają się w lewym górnym rogu widoku port, nic nie robi, jeśli nie ma widoku.

+4

To nie zadziałało dla mnie - ScrollPane przeskakuje na samą górę, a następnie ponownie opada na dół. – jwoolard

+0

To zadziałało dla mnie ¯ \\ _ (ツ) _/¯ Mam JTable wewnątrz mojego JScrollPane'a. – mikato

115

Wywołanie setCaretPosition(0) na komponencie tekstowym spowoduje przewinięcie do góry.

+0

Masz rację, problem polegał na tym, że karetka znajdowała się na końcu komponentu tekstowego. Działa również po wywołaniu "setText (...)" w edytorze tekstu. (testowane z instancją JEditorPane jako panel tekstowy wewnątrz JScrollPane). – Guillaume

30

Tylko w przypadku, gdy nie korzystasz z komponentu tekstowego przyjrzeć wątku pisał tutaj .... Setting Scroll Bar on a JScrollPane

Ich rozwiązaniem jest spin off wątku poprzez invokeLater

final JScrollPane scroll = new JScrollPane(text); 
javax.swing.SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     scroll.getVerticalScrollBar().setValue(0); 
    } 
}); 
+1

To jest najbliższa odpowiedź na moje pytanie. Http://stackoverflow.com/questions/42961012/how-to-set-scroll-to-the-top-jpanel-that-has-multiple-jtextareas-inside-jscrol ? noredirect = 1 # comment73017112_42961012 Jak jednak skorzystać z tej metody, jeśli w panelu JScrollPane znajduje się panel? –

9

Będzie uczynić pracę:

DefaultCaret caret = (DefaultCaret) textArea.getCaret(); 
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); 
7

można użyć metody setCaretPosition(0) tuż po setText(String t) swojego komponentu tekstowego.

+1

Kopia wcześniejszej odpowiedzi @ Craiga. –

Powiązane problemy