Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Swing: Button verschwindet einfach

Empfohlene Antworten

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

ist er denn während der schleife sichtbar ?

oder verschwindet er gleich nach dem start der schleife ?

mfg byte

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...

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.