Hallo,
will meine Kenntnisse in Sachen GUI-Programmierung auffrischen und bis auf folgendes Problem gestoßen.
Ich habe ein JFrame und ein JWindow. Auf den JWindow soll ein Text gezeichnet werden. Beim Starten des Programms erscheint der Text nicht. Erst wenn ich die repaint-Methode des JWindow aufrufe wird der Text manchmal angezeigt. Als ich das Programm öfters hintereinander startete sah ich, dass manchmal der Text erscheint und manchmal nicht. Habt ihr eine Erklärung dafür?
Hier der Code:
Nun die zweite Klasse:
will meine Kenntnisse in Sachen GUI-Programmierung auffrischen und bis auf folgendes Problem gestoßen.
Ich habe ein JFrame und ein JWindow. Auf den JWindow soll ein Text gezeichnet werden. Beim Starten des Programms erscheint der Text nicht. Erst wenn ich die repaint-Methode des JWindow aufrufe wird der Text manchmal angezeigt. Als ich das Programm öfters hintereinander startete sah ich, dass manchmal der Text erscheint und manchmal nicht. Habt ihr eine Erklärung dafür?
Hier der Code:
Java:
import javax.swing.JFrame;
import javax.swing.JWindow;
/**
* @author pc
*
*/
public class Area extends JFrame{
public Area() {
/**try {
Scanner scanner = new Scanner( new File("text.txt") );
while ( scanner.hasNextLine() )
System.out.println( scanner.nextLine() );
scanner.close();
}catch( FileNotFoundException f ) {
}**/
setTitle("JFrame mit setSize()");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,200);
setLocation(100,100);
setVisible(true);
SubArea window = new SubArea(this);
window.setSize(500,500);
window.setLocation(500,500);
window.setVisible(true);
//window.repaint();
//Wenn das einkommentiert, dann wird bei
//Programmstart gezeichnet (aber auch nur manchma)
}
/**
* @param args
*/
public static void main(String[] args) {
new Area();
}
}
Java:
import javax.swing.JWindow;
/**
*
*/
/**
* @author pc
*
*/
public class SubArea extends JWindow{
public SubArea(Frame frm) {
super(frm);
}
@Override
public void paint( Graphics g )
{
System.out.println("halloo");
super.paint( g );
g.drawString(new String("hallo"),50,50);
System.out.println("hallo1");
}
}