Aus einer Gui Buttons, Label und ProgessBars entfernen

xYurisha

Grünschnabel
Hallo Leute,

ich würde gerne wissen wie ich aus einer Gui alles bis auf das Fenster entfernen kann.
Ich hatte erst an setVisible(false); gedacht, doch frage ich mich ob es nicht bessere Lösung gibt.
Zu dem Projekt an sich kann ich sagen das ich um mich in Eclipse und Gui's reinzuarbeiten, ein Quiz Projekt von YT nach programmiert habe. Das möchte ich jetzt ausbauen und wollte probieren, dass wenn das Quiz erledigt worden ist, alle Buttons und Frames entfernt werden und zwei neue Buttons erscheinen die den Anwender entscheiden lassen ob sie nochmal spielen wollen oder die Anwendung verlassen.
Ich habe schon Beiträge gesehen wo mit remove oder removeALL gearbeitet worden ist, doch bei mir funktioniert das nicht ganz, die Buttons sind zwar nicht mehr anklickbar, aber sie sind trotzdem noch zu sehen.
Ich hoffe ihr könnt mir helfen.

Teil des Programms:
Java:
    JLabel frage;
    JButton ant[] = new JButton[4];
   
    JFrame fenster;
    JProgressBar prozent;
   
    int loesung,richtig;
   
    public static void main(String[] args) {
   
      new Frage_aendern();   
       
    }
   
  public Display_Ausgabe() {
      fenster = new JFrame();//hier wird das Fenster/Objekt erzeugt
      fenster.setSize(600,400);
      fenster.setLocation( (int) (dim.getWidth()-600)/2, (int) ((dim.getHeight()-400))/2);
      fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      fenster.setVisible(true);
      fenster.setLayout(null);
     
      ant[0]= new JButton(" ");
      ant[0].setBounds(50,110,120,40);
      ant[0].addActionListener(this);
      fenster.add(ant[0]);     
     
      ant[1]= new JButton(" ");
      ant[1].setBounds(50,190,120,40);
      ant[1].addActionListener(this);
      fenster.add(ant[1]);     

      ant[2]= new JButton(" ");
      ant[2].setBounds(400,110,120,40);
      ant[2].addActionListener(this);
      fenster.add(ant[2]);     
     
      ant[3]= new JButton(" ");
      ant[3].setBounds(400,190,120,40);
      ant[3].addActionListener(this);
      fenster.add(ant[3]);
     
      frage = new JLabel("Frage!:");//hier wird das Textfeld mit der Frage erstellt
      frage.setBounds(55, 10, 300, 40);
      fenster.add(frage);
     
      prozent = new JProgressBar(0,100);
      prozent.setBounds(225,280,120,40);
      prozent.setValue(0);
      prozent.setStringPainted(true);
      fenster.add(prozent);
  }
Ansatz fürs entfernen: (Zur Übersicht habe ich nur ein Button erstmal ausgewählt)
Java:
        public void remove() {
                ant[0].setVisible(false);
           
        }

oder so

Java:
        public void remove() {
                fenster.removeAll();
                  fenster.validate();
           
        }
 
Hi,

Java:
fenster.removeAll();
fenster.invalidate();
fenster.repaint();

Das sollte alles entfernen und das Fenster neu zeichnen. DAs was du beschrieben hast (Button sichtbar, aber nicht klickbar) deutet darauf hin, dass das Fenster nicht neu gezeichnet wurde. Wenn du es dann minimiert und wiederhergestellt hättest, dann wäre es richtig angezeigt worden.

Grüsse,
BK
 
Zurück