Avatar billede conrad Nybegynder
16. december 2001 - 15:09 Der er 3 kommentarer og
1 løsning

scrollbar vil ikke scrolle helt i bund

Jeg modtager nogle chattext objekter fra en server og kalder insertChatText metoden. Det virker fint. Problemet er at scrollbaren ikke scroller det sidste klik ned så den sidste nye tekst kan ses.

Her lidt af koden

JScrollBar scrollbar;
JList chatlist;


public Chattext(int id, String txt,Color c)
    {
        this.clientid = id;
        this.text = txt;
        this.col = c;
    }


public void insertChatText(Chattext ct)
    {
       
        chatlistmodel.addElement(ct);
        scrollbar.setValue( scrollbar.getMaximum());
    }
Avatar billede logical Nybegynder
16. december 2001 - 17:29 #1
Hvis du har din JList inde i en JScrollPane, hvilket jeg vil anbefale dig, kan du med listen i hånden sige:

JList list = ....
list.ensureIndexIsVisible(list.getModel().getSize()-1);

Så skulle den holde scroll i bunden.
Avatar billede carstenknudsen Nybegynder
16. december 2001 - 17:35 #2
Du kan benytte en AdjustmentListener, den
duer også selvom du ikke har en JList, men
uanset hvad du har. Den tilføjes med en
addAdjustmentListener( new ScrollBarListener(scrollBar) );
her er koden:
private static class ScrollBarListener implements AdjustmentListener {
    private JScrollBar bar = null;

    public ScrollBarListener( JScrollBar bar ){
        this.bar = bar;
    } // constructor
   
    public void adjustmentValueChanged( AdjustmentEvent e ) {
        bar.setValue( bar.getMaximum() );
    } // adjustmentValueChanged
    } // ScrollBarListener
Avatar billede logical Nybegynder
17. december 2001 - 08:24 #3
Bortset fra at, hans problem er, at umiddelbart efter han har hældt noget i listen, vil han vise den sidste linie, og derfor kalder scrollbar.setValue(scrollbar.getMaximum()). Imidlertid sker der det, at JListen udvider efterfølgende maxmimum værdien på sin ScrollPanes Scrollbar, og det ser derfor ud som om, den ikke når helt i bund. value == max-1.

Hvis man tilføjer den adjustmentlistener, observerer man når scrollbaren ændrer sig, og ikke listen. Dvs. den forkerte vej rundt. Derudover vil lige netop denne kode sikre, at man aldrig kan bruge sin scrollbar til noget som helst.
Avatar billede conrad Nybegynder
17. december 2001 - 13:44 #4
Perfekt, og iøvrigt tak for den fine forklaring i kommentaren
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