Avatar billede elites Nybegynder
06. august 2002 - 13:32 Der er 12 kommentarer og
1 løsning

ScrollPane problem

Hejsa
Jeg har et JtextPane i en JScrollPane....

Jeg vil gerne at man hele tiden kan se det sidst tilføjede til panet..

Dvs. at man skal som standard se bunden og kan så bevæge sig opad..

Lige nu viser den toppen af panet selv om at man tilføjer noget ud over synsfeltet...

Håber i forstår
Henrik
Avatar billede bearhugx Nybegynder
06. august 2002 - 13:35 #1
Skal den gå ned i bunden af scrollpanen, hver gang, der kommer nyt indhold i TextPane'et ???
Avatar billede elites Nybegynder
06. august 2002 - 13:44 #2
Jeper præcist
Avatar billede bearhugx Nybegynder
06. august 2002 - 13:46 #3
Er lige igang med at afteste en tese.. 2 min.
Avatar billede elites Nybegynder
06. august 2002 - 13:58 #4
Thx... lyder fedt!!
Avatar billede bearhugx Nybegynder
06. august 2002 - 14:08 #5
Har du tilføjet dit JTextPane til et JScrollPane ?? .. I min test viser den "bunden" af TextPane't hele tiden...

Kan jeg se noget kode, for, hvordan du har gjort ???

/Søren
Avatar billede bearhugx Nybegynder
06. august 2002 - 14:11 #6
Jeg kan lige sende min simple kode, hvis det er ønsket...

/**
* FILE : ScrollToLastRunner.java
* @author Søren Munk Skrøder
* @version 1.0
*/

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;

public class ScrollToLastRunner extends JFrame {
    public JTextPane text;
    public JScrollPane textContainer;
    public JTextField input;
    public JButton sender;
   
    public ScrollToLastRunner() {
        this.setSize(400,400);
        text = new JTextPane();
        textContainer = new JScrollPane(text);
        input = new JTextField();
        sender = new JButton("add");
        sender.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                text.setText( text.getText()+input.getText()+"\n");
               
            }
        });
       
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        panel.add(input, BorderLayout.CENTER);
        panel.add(sender, BorderLayout.EAST);
       
        this.getContentPane().setLayout( new BorderLayout() );
        this.getContentPane().add(textContainer, BorderLayout.CENTER);
        this.getContentPane().add(panel, BorderLayout.SOUTH);       
       
        this.show();
    }

    public static void main(String[] args) {
        new ScrollToLastRunner();
    }
}
Avatar billede elites Nybegynder
06. august 2002 - 14:25 #7
Det er en del af et større program...

Jeg tror at det kan have noget at gøre med at jeg i mit JTextPane anvender et Document.. og at jeg når jeg tilføjer en linie så kalder jeg metoden doc.insertString() og ikke en setText metode på panet...

Så jeg skal nok have en eller anden document listener...
Avatar billede bearhugx Nybegynder
06. august 2002 - 14:34 #8
Det kan du have ret i -- jeg prøver lige noget kode...
Avatar billede bearhugx Nybegynder
06. august 2002 - 14:37 #9
Hmm... selv med følgende kode virker det, som du vil have det -
[...SNIP...]
public class ScrollToLastRunner extends JFrame {
[...SNIP...]
  public Document doc;

    public ScrollToLastRunner() {
        this.setSize(400, 400);
        text = new JTextPane();
        doc = text.getDocument();
       
[...SNIP...]
        sender.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    doc.insertString(doc.getLength(), input.getText()+"\n", null);
                } catch( BadLocationException blEx) {
                }
            }
        });

[...SNIP...]

/Søren
Avatar billede elites Nybegynder
06. august 2002 - 14:37 #10
Det er harskt det her... kan ikke helt se hvad der skal gøres...
En JScrollPane burde have den egenskab at man kan fortælle den hvor slideren skal være!!! F.eks. i bunden eller i toppen!!!
Avatar billede bearhugx Nybegynder
06. august 2002 - 14:39 #11
Og hvis jeg scroller op i min app, og derefter trykker på add, så springer scrollbaren ned i bunden af JTextPane't igen...
Jeg forstår ikke, hvorfor det ikke virker for dig...

Jeg kan sende koden, hvis du vil prøvekøre app'en...
/Søren
Avatar billede elites Nybegynder
06. august 2002 - 14:41 #12
Fuck nu har jeg fundet fejlen... :(

scroll = new JScrollPane();
scroll.setViewportView(pane);
scroll.setBounds(20,164,450,300);

skal rettes til....
Troede bare ikke at det var det....
scroll = new JScrollPane(pane);
scroll.setBounds(20,164,450,300);

Tusind tak for hjælpen!!
Avatar billede bearhugx Nybegynder
06. august 2002 - 14:47 #13
takker for points :-)
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