Avatar billede lauritsen Nybegynder
03. april 2005 - 16:27 Der er 1 kommentar

setValue() ingen indflydelse på JScrollBar

Jeg har gang i lidt Swing GUI, og jeg har brug for et JTextArea med scrollbars på. Af en eller anden grund starter det med at vise bunden af tekstfeltet, så efter at have fyldt tekst i prøver jeg at sætte ScrollBar'ens værdi til 0. Det sker der dog imidlertid ingenting ved.

Følgende kode:

JTextArea t = new JTextArea();
t.setEditable(false);
t.setLineWrap(true);
t.setWrapStyleWord(true);
t.append("tekst");
...
t.append("mere tekst");
JScrollPane scroll = new JScrollPane(t,
    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
JScrollBar v = scroll.getVerticalScrollBar();
System.out.println(v.getMinimum() + "/" + v.getMaximum() + "/" + v.getVisibleAmount());
System.out.println(v.getValue());
v.setValue(50);
System.out.println(v.getValue());

giver følgende udskrift:
0/100/10
0
50

Hvilket jo ser rigtigt ud, men scrollbar'en rokker sig ikke ud af stedet. Når programmet er startet op, kan man dog sagtens scroll'e normalt med musen. Nogen anelse om, hvad der kan være galt?
Avatar billede _carsten Nybegynder
03. april 2005 - 20:20 #1
Ud fra din kode at dømme, fylder du dit JTextArea med tekst under selve initieringen og det er der problemet ligger. Cursor positionen i et JTextArea sættes først når det er synligt, hvorefter der automatisk scrolles til positionen. Din v.setValue(50) kaldes altså længe før der automatisk scrolles.

Du kan omgå det ved at adde en componentListener til din JFrame og dermed vente med at sætte scrollbaren til den er synlig


JScrollBar bar;

        // Add til JFrame
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                setBar(evt);
            }
        });


    private void setBar(java.awt.event.ComponentEvent evt) {
        bar.setValue(50);
    }

Jeg ken ikke lige komme på andre smarte måder at gøre det på.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester