SetCaretPosition avec un JEditorPane

remy1066 Messages postés 51 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 31 octobre 2006 - 11 janv. 2006 à 19:38
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 11 janv. 2006 à 22:41
slt,



j'ai un composant JEditorPane dans lequel je mets un String d'une certaine longueur qui augmente au fur et a mesure.



je souhaiterai donc que mon composant suive la longueur de mon String
grace à un scrollbar (le scrollbar est inséré automatiquement au bout
d'une certaine longueur).

le but est juste de faciliter la lecture (au lieu de redescendre le scrollbar à chaque fois pour voir la fin du String...)



j'utilise la methode setCaretPostition() mais j'ai un pb.

je fais:




message+="blabla";

Editorpane.setText(message);

Editorpane.setCaretPosition(message.length());





le message d'erreur ressemble a ca: ... IllegalArgumentException : bad position ... at ... setCaretPosition()...



j'ai refait le test avec un JTextArea au lieu d'un JEditorPane et ca fonctionne...



merci d'avance

1 réponse

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
11 janv. 2006 à 22:41
Salut,



le mieux c'est d'utiliser le document du JEditorPane exemple ci-dessous



import java.awt.BorderLayout;

import java.awt.Dimension;



import javax.swing.JEditorPane;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.SwingUtilities;

import javax.swing.text.Document;



public class Test extends JFrame{



public Test(){

super("Test");

setSize(new Dimension(300, 300));

setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JEditorPane editor = new JEditorPane();

String msg = "";

for(int i = 0; i < 100; i++)

msg+= (i +"\n");

editor.setText(msg);

Document doc = editor.getDocument();

editor.setCaretPosition(doc.getLength()-1);

JScrollPane scroll = new JScrollPane(editor);

add(scroll, BorderLayout.CENTER);

setVisible(true);

}





public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable(){

public void run(){

new Test();

}

});



}

}

WORA
0
Rejoignez-nous