alle Frames ansprechen

Marshallbbw

Erfahrenes Mitglied
Hi Leute,

ich würde gerne alle Frames ansprechen wollen und diese ausblenden. Leider kann ich nicht JFrame.setVisible(false); dafür nehmen oder irgendwas mit System.... machen. Hat vielleicht Jemand ne Idee wie man das bewerkstelligen kann. Wäre euch sehr dankbar für Tipps.
 
Hallo!

Java:
/**
 * 
 */
package de.tutorials;

import java.awt.Frame;
import javax.swing.JFrame;

public class HideAllVisibleFramesExample {

    /**
     * @param args
     */
public static void main(String[] args) throws Exception{
        for(int i =0; i < 10; i++){
            new JFrame("Frm: " + i){{setDefaultCloseOperation(EXIT_ON_CLOSE);}}.setVisible(true);
        }
        
        Thread.sleep(5000L);
        
        for(Frame frm: JFrame.getFrames()){
            if(frm.isVisible()){
                frm.setVisible(false);
            }
        }
    }
}

Gruss Tom
 
Ey vielen vielen Dank - das war genau das Richtige - das hätte ich nie raus gefunden - echt geil dein Beispiel. Ich hab bloß die Foreach-Schleife anders gestalten müssen, weils bei mir Probleme damit gab (for each statement are only available if source level is 5). vielleicht kannste mir sagen was das genau heisst. ich meine Übersetzen kann ich selber, aber den Sinn verstehe ich nicht.

Hier noch meine Anpassung für Interessierte:
Code:
import java.awt.Frame;
import javax.swing.JFrame;
       
public class HideAllVisibleFramesExample 
{
  public static void main(String[] args) throws Exception
  {
    for(int i =0; i < 10; i++)
    {
      new JFrame("Frm: " + i)
      {
        {
          setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
      }.setVisible(true);
    }

    Thread.sleep(5000L);
    
    Frame[] frm = new JFrame().getFrames();    
    System.out.println("anzahl frames: " + frm.length);         

    //for(Frame frm: JFrame.getFrames())
    for(int i =0; i < frm.length; i++)
    {  	
      if(frm[i].isVisible())	
      {
        frm[i].setVisible(false);
      }      
    }    
  }
}
 
Die for-each Schleife wurde erst in JDK 5 eingeführt, evtl. arbeitest du mit Eclipse etc. und hast noch JDK 1.4 eingestellt bzw. optimiert für JDK 1.4.
 
Zurück