LordK Geschrieben 3. Dezember 2004 Geschrieben 3. Dezember 2004 Hallo Zusammen, ich hab ein kleines Übungsprogramm in Java mit AWT geschrieben. Das Programm besteht nur einem Frame und eine Button. Beim Frame ist der Layoutmanager deaktivert, da ich es vorziehe die Componenten selbst zu plazieren. Der Frame ist 300x300 pixel groß und der Button sitzt genau in der Mitte. Wenn der Button betätigt wird, wird eine schleife bis 2000000 durchlaufen und bei jedem 100sten durchlauf wird der Frame um 1 pixel größer bis die Breite 800 ist. Der Button bleibt dabei immer in der Mitte vom Frame. So, jetzt mein eigentliches Problem, ich wollte das ganze jetzt in Swing programmieren, um das auch mal zu üben. Das Problem ist jetzt, dass der Frame zwar größer wird, aber der Button auf einmal verschwindet. Erst wenn ich dann bei dem Frame manuell die größe ändere taucht der Button wieder auf. Hat jemand eine Idee woran das liegt? Hier der Code von dem Swing Programm: package gui; import javax.swing.*; import java.awt.event.*; public class TestFrame extends JFrame implements ActionListener{ JButton bTest; public TestFrame(String title){ super(title); this.setBounds(200,100,300,200); this.getContentPane().setLayout(null); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); int w = this.getWidth(); int h = this.getHeight(); bTest = new JButton("Test"); this.getContentPane().add(bTest); bTest.setBounds(((w/2)-40),((h/2)-20),80,20); bTest.setVisible(true); bTest.addActionListener(this); } public void actionPerformed(ActionEvent arg0) { for(int i = 0;i<=2000000;i++){ if(i%100==0){ int x = this.getX(); int y = this.getY(); int w = this.getWidth(); int h = this.getHeight(); if(w <= 800){ w++; h++; this.setBounds(x,y,w,h); bTest.setBounds(((w/2)-40),((h/2)+10),80,20); }else break; } } } } Danke & Gruß LordK Zitieren
ByteRix Geschrieben 3. Dezember 2004 Geschrieben 3. Dezember 2004 ist er denn während der schleife sichtbar ? oder verschwindet er gleich nach dem start der schleife ? mfg byte Zitieren
Peeter Geschrieben 3. Dezember 2004 Geschrieben 3. Dezember 2004 Also ich hab das Programm jetzt mal getestet. Bei mir geht es ohne Probleme. j2sdk-1.4.2_06 und Gentoo Linux Vielleicht hilt es bei dir ein "repaint()" und "validate()" nach der Schleife aufzurufen... Zitieren
LordK Geschrieben 4. Dezember 2004 Autor Geschrieben 4. Dezember 2004 ist er denn während der schleife sichtbar ? oder verschwindet er gleich nach dem start der schleife ? mfg byte Nein unmittelbar nach drücken des Buttons verschwindet er und taucht bis zum manuellen ändern der größe nicht mehr auf, selbst verschieben und minimieren des Frames bringt nichts, nur beim Maximieren taucht er dann auf einmal wieder auf. Vielleicht hilt es bei dir ein "repaint()" und "validate()" nach der Schleife aufzurufen... Hab ich probiert bringt bei mir nichts ------------------------------------------------------------------------- Ich nehme alles zurück.... Hab den Validate auf den Button gemacht und nicht auf den Frame. mit this.validate() hats funktioniert Besten Dank Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.