Voilà, j'ai un JScrollPane qui contient un JTextArea, jusqu'ici rien de bien extraordinaire. Le seul problème est que le ScrollPane ne défile pas automatiquement lorsque j'ajoute du texte, alors qu'il me semble bien qu'il le fait, normallement, non ?
Voilà mon code :
dans le constructeur de ma JFrame (après je touche plus à ces objets) :
Code :
- //redirection de la sortie standard
- JTextArea stdOutText=new JTextArea();
- stdOutText.setFont(new Font("Courier",Font.PLAIN,14));
- stdOutText.setEditable(false);
- stdOutText.setLineWrap(true);
- stdOutText.setWrapStyleWord(true);
- PrintStream outBak=System.out;
- System.setOut(new PrintStream(new RedirigedStream(stdOutText,outBak)));
- JScrollPane textAreaPane=new JScrollPane(stdOutText);
- textAreaPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
- textAreaPane.setPreferredSize(new Dimension(screenWidth,(screenHeight-displayHeight)/2));
- textAreaPane.setIgnoreRepaint(false);
|
et la déclaration de la classe RedirigedStream
Code :
- public class RedirigedStream extends OutputStream {
- private JTextArea jta;
- private PrintStream stdOut;
- public RedirigedStream(JTextArea jta,PrintStream stdOut) {
- this.jta=jta;
- this.stdOut=stdOut;
- }
- public void write(int a) throws IOException {
- stdOut.write(a);
- byte [] b={(byte)a};
- jta.append(new String(b,"ISO-8859-1" ));
- }
- }
|
le "stdOut.write(a);" dans RedirigedStream->write(int) me sert en cas de freeze de mon appli , et la redirection m'est utile car je suis en plein écran ...
des idées ?
Message édité par bobuse le 23-08-2002 à 15:32:08