Axel Richter: Zeilen von JTextPane ermitteln?

Beitrag lesen

Hallo,

Ich habe ein JTextPane.
In einer Variable var = 4 steht eine Zeilenummer.
Nun will ich den Cursor (Caret) in die Zeile setzen die in var steht.
Wie mach ich das? Ich kann mit setCaretPosition(index) ja nur den offset angeben jedoch nicht die Zeile????

Du musst mit dem Document im JTextPane arbeiten:

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

public class tpanel extends JFrame {

public tpanel() {
        super("TPanel");
        JTextPane jtp = new JTextPane();
        Document d = jtp.getDocument();
        try {
          d.insertString(0,
            "Das ist der Textinhalt \n" +
            "in mehreren Zeilen \n" +
            "Das ist der Textinhalt \n" +
            "in mehreren Zeilen \n" +
            "Das ist der Textinhalt \n" +
            "in mehreren Zeilen \n" +
            "Das ist der Textinhalt \n" +
            "in mehreren Zeilen \n", null
          );
        } catch (BadLocationException ble) {}

Element bereich = d.getDefaultRootElement();
        int anzAbsaetze = bereich.getElementCount();
        System.out.println(anzAbsaetze);

//gehe zu Zeile 4
        int pos = bereich.getElement(3).getStartOffset();
        jtp.setCaretPosition(pos);

JPanel cp = new JPanel();
        cp.add(jtp);
        setContentPane(cp);
    }

public static void main(String[] args) {
        JFrame f = new tpanel();
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        f.pack();
        f.setSize(200,200);
        f.setVisible(true);
    }
}

http://javaalmanac.com/cgi-bin/search/find.pl?words=jtextpane+document

viele Grüße

Axel