Komponente nicht bereit?

FA

Mitglied
Hallo Freunde,
bei diesem Programm ist das Problem, daß eine Komponente noch nicht fertig zu sein scheint, wenn die Abfrage in Zeile 36 kommt. Ich habe schon diverse "while (!KOMP.isValid());" ausprobiert, leider ohne Erfolg, der Scrollbar ist (fast) immer zu weit oben und immer woanders.

Any ideas?

5itmxdc3.jpg


Java:
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class ScrollPaneProblem {
	
	static JFrame frame;
	static JScrollPane pane;
	static JTextArea area;
	
	public static void main(String[] args){
		area=new JTextArea();
		area.setLineWrap(true);
		area.setFont(new Font("Monospaced",Font.BOLD,20));

		pane=new JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		pane.setPreferredSize(new Dimension(400,300));
		
		frame=new JFrame();
		frame.add(pane);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
		
		for (int i=0;i<1500;i++){
			ausgabe(".");
		}
	}

	private static void ausgabe(String string) {
		area.append(string);
		pane.getVerticalScrollBar().setValue(area.getHeight());
	}

}
 
Zuletzt bearbeitet:
Java:
        frame.setVisible(true);
        
        for (int i=0;i<1500;i++){
            ausgabe(".");
        }

Von einigen anderen Dingen mal abgesehen: Der Aufruf von
Code:
setVisible()
zeigt das Fenster bereits an und zu diesem Zeitpunkt ist noch kein Inhalt vorhanden. Mach das
Code:
pack()
und
Code:
setVisible()
nach allen Initialisierungen.
 
Von einigen anderen Dingen mal abgesehen: Der Aufruf von
Code:
setVisible()
zeigt das Fenster bereits an und zu diesem Zeitpunkt ist noch kein Inhalt vorhanden. Mach das
Code:
pack()
und
Code:
setVisible()
nach allen Initialisierungen.

Danke, aber das mach ich. Initialisierung ist abgeschlossen. Die Punkte sollen zur Laufzeit eingefügt werden. Ist ja nur ein Beispiel-Programm zur Veranschulichung meines Problems.
 
Achso. Dann versuche mal das automatische Scrollen anders zu lösen. Etwa so:
Java:
area.setCaretPosition( area.getText().length() );

Danke! Das funktioniert. Suche seit 2 Tagen und bin nicht darauf gekommen. Die Frage nach der langsamen Komponente bleibt, aber so funktionierts erstmal. Sogar, wenn die Textarea nicht "Editable" ist.
 

Neue Themen


Zurück
Oben