JTextArea wird grau

illaX

Erfahrenes Mitglied
Hi,

ich habe eine JTextArea in einem JScrollPane, wenn ich einen String hinzufüge wird die JTextArea manchmal grau. Woran liegt das?

Hier mal der code:
Code:
while (strError != null) {
                        taOutput.append(strError + "\n");
                        strError = errorStream.readLine();
                        
                        // auto scroll 
                        Point point = new Point(0,(int)(taOutput.getSize().getHeight()));
                        spOutput.getViewport().setViewPosition(point);
                    }

Danke für Hilfe
 
schade :'(
es passiert immer hierbei:

// auto scroll
Point point = new Point(0,(int)(taOutput.getSize().getHeight()));
spOutput.getViewport().setViewPosition(point);

ich glaube das habe ich auch von dir im forum gefunden. Gibt es vllt. noch eine andere Möglichkeit?
 
ich glaube ich habe den Fehler gefunden.

Wir müssen mit dem jre 1.4.2_07 im eclpise arbeiten. Auf meinem Betriebssystem habe ich das 1.5. Also *.jar erstellt und bisher ist es der Fehler noch nicht aufgetreten....
 
Hallo!

Weshalb musst du denn so kompliziert scrollen?
Code:
 package de.tutorials;
 
 import java.awt.BorderLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 import javax.swing.Timer;
 
 public class JTextAreaAutoScrollExample extends JFrame{
 
 	public JTextAreaAutoScrollExample(){
 		super("JTextAreaAutoScrollExample");
 		setDefaultCloseOperation(EXIT_ON_CLOSE);
 		
 		final JTextArea textArea = new JTextArea(20,60);
 		final Timer timer = new Timer(1000,new ActionListener(){
 			Date date = new Date();
 			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
 			public void actionPerformed(ActionEvent e) {
 				date.setTime(System.currentTimeMillis());
 		    	textArea.append(simpleDateFormat.format(date) +"\n");
 				try {
 					throw new Exception();
 				} catch (Exception e1) {
 		    		StringWriter stringWriter= new StringWriter();
 		    		e1.printStackTrace(new PrintWriter(stringWriter));
 		    	    textArea.append(stringWriter+"\n");
 					
 				}
 			}
 		});
 		timer.setRepeats(true);
 		
 		JButton btnStartAddingSomeText = new JButton("Start adding some text");
 		btnStartAddingSomeText.addActionListener(new ActionListener(){
 			public void actionPerformed(ActionEvent e) {
 				timer.start();
 			}
 		});
 		
 		JButton btnStopAddingSomeText = new JButton("Stop adding some text");
 		btnStopAddingSomeText.addActionListener(new ActionListener(){
 			public void actionPerformed(ActionEvent e) {
 				timer.stop();
 			}
 		});
 		
 		getContentPane().add(new JScrollPane(textArea),BorderLayout.NORTH);
 		getContentPane().add(btnStartAddingSomeText,BorderLayout.CENTER);
 		getContentPane().add(btnStopAddingSomeText,BorderLayout.SOUTH);
 		pack();
 		setVisible(true);
 	}
 	
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		new JTextAreaAutoScrollExample();
 	}
 }
Scroll auch automatisch unter Java 1.4.2_07
(Start add some text drücken...)

Gruß tom
 
Jetzt wo ich mir dein Beispiel angesehen habe Frage ich mich auch warum ich scrollen muss.

:confused: :confused: :confused:

Hier mal mein quellcode
Code:
BufferedReader inputStream = new BufferedReader(
                            new InputStreamReader(process.getInputStream()));
                    String strInput = "";
                    
                    Pattern p = Pattern.compile(".*[?]");
                    while (strInput != null) {
                        taOutput.append(strInput + "\n");
                        strInput = inputStream.readLine();

aber ich erkenne keinen unterschied
 
Zuletzt bearbeitet:
Hallo!

Also ich hänge die Strings innerhalb des EventDispatchThreads an die JTextArea an. Machst du das vielleicht innerhalb eines anderen Threads? Wenn ja, könntest du mal folgendes versuchen:
Code:
   Pattern p = Pattern.compile(".*[?]");
                     while (strInput != null) {
                         SwingUtilities.invokeLater(new Runnable(){
 					public void run() {
 taOutput.append(strInput + "\n");						
 					}
 				});
                         strInput = inputStream.readLine();
Bzw. solltest du dir vorher ein entsprechendes Runnable zusammen bauen und dies dann wiederverwenden...

gruß tom
 
Ich kann mich nur vor dir verneigen...

DANKE DANKE

Ich geh mich mal über die EventDispatchThreads informieren ;)

Schönen Tag noch
 
Zurück