Zum Inhalt springen

Swing: Button verschwindet einfach


LordK

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

Besten Dank :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...