Avatar billede kristianp Nybegynder
24. august 2001 - 00:45 Der er 5 kommentarer og
1 løsning

ScrollPane

Jeg har et JTextArea der ligger i en JScrollPane, JTextArea bliver løbende fyldt op med tekst, hvordan får jeg scrollpanen til hele tiden at rykke ned så man ser det nyeste tekst.

Et andet problem er hele min JRE, det kører af helvede til, den ikke finde ud af at gentegne når der sker ændringer i gui\'en, eks i min scrollpane når man scroller ligner teksen noget værre lort, Jeg bruger jdk1.3.1, og det er ikke mit program, den er også galt i JB5.0
Avatar billede cli Nybegynder
25. august 2001 - 21:37 #1
Her er et lille eksempel på dit scroll panel.
package scrollproject;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Scrolling extends JFrame {
  JPanel contentPane;
  JScrollPane jScrollPane2 = new JScrollPane();
  JTextArea jTextArea1 = new JTextArea();
  GridBagLayout gridBagLayout1 = new GridBagLayout();

  public Scrolling() {
    try {
      init();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  private void init() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(gridBagLayout1);
    this.setSize(new Dimension(400, 300));
    this.setTitle(\"Text area that scrolls\");
    jTextArea1.setText(\"Type here\");
    contentPane.add(jScrollPane2
          , new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0
            , GridBagConstraints.CENTER
            , GridBagConstraints.BOTH
            , new Insets(12, 14, 174, 239), 80, 93));
    jScrollPane2.getViewport().add(jTextArea1, null);
  }
}
Avatar billede carstenknudsen Nybegynder
29. august 2001 - 13:47 #2
Såfremt du ikke har løst problemet endnu:
Det er det \"pæneste\" at tilføje en AdjustmentListener
til en JScrollBar fra dit JScrollPane som du får frem med
commandoerne:
JScrollPane scrollPane=...;
JScrollBar scrollBar = scrollPane.getVerticalScrollBar();
scrollBar.addAdjustmentListener(new SomeListener());

hvor SomeListener implementerer AdjustmentListener
interfacet, dvs. implementerer metoden
public vid adjustmentValueChanged( AdjustmentEvent e ) .
Avatar billede kristianp Nybegynder
29. august 2001 - 19:13 #3
Ok, lyder fornuftigt nok, men hvad skal jeg gøre i adjustmentValueChanged ??
Avatar billede carstenknudsen Nybegynder
30. august 2001 - 09:24 #4
Følgende implementering af en AdjustmentListener
skulle klare det for dig:

import java.awt.event.*;
import javax.swing.JScrollBar;
public class ScrollBarUpdateListener implements AdjustmentListener {
    private int prev;
    private boolean first;
    private JScrollBar bar;   
public ScrollBarUpdateListener( JScrollBar bar ) {
        this.bar = bar;
        this.first = true;
    }

    public void adjustmentValueChanged( AdjustmentEvent e ) {
        if ( ! ( bar.getValueIsAdjusting() ) ) {
            if ( bar.getMaximum() != prev ) {
                prev = bar.getMaximum();
                if ( first )
                    first = false;
                else
                    bar.setValue( prev );
            }
        }
    }
}
Avatar billede kristianp Nybegynder
30. august 2001 - 10:09 #5
Jamen det virker jo fint !!
Men jeg kunne ikke lige forstå at der skulle gøres så meget, så jeg prøvede dette, og det virker også fint, men er det en dårlig ide ??

public class ScrollListener implements AdjustmentListener{
    private JScrollBar bar = null;

    public ScrollListener(JScrollBar bar){
        super();
        this.bar = bar;
    }

    public void adjustmentValueChanged(AdjustmentEvent e){
        bar.setValue(bar.getMaximum());
       
    }
}
Avatar billede kristianp Nybegynder
30. august 2001 - 10:32 #6
Du skal da lige have lidt point
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