Mehrere JFrames gleichzeitig öffnen

Tequilawolf

Mitglied
Hallo zusammen,

ist es möglich, nach dem klick auf einen Button 2 oder mehr JFrames gleichzeitig zu öffnen? Ich bekomme das nicht hin, da es sich ja immer um das selbe contentPane (bzw. es scheint immer das selbe Frame zu sein) handelt, es also überschrieben wird.

Also ich meine damit, dass diese Frames alle zur gleichen Zeit geöffnet werden sollen, z.B. mit dem Titel Frame1, Frame2,... .Ingesamt sollen es 54 Frames sein und ich kann die doch nicht alles manuell extra erzeugen oder? Ich dachte, dass würde man z.B. über eine for-Schleife machen können.

Gibt es da irgendwie eine Möglichkeit?
 
Zuletzt bearbeitet:
Hallo.

Versuche es mal damit:

Java:
public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 500; i++) {
                    openFrame("Frame " + i);
                }
            }
        });
    }

    private static void openFrame(String name) {
        JFrame frame = new JFrame(name);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new JLabel(name));
        frame.pack();
        frame.setVisible(true);
    }

😀

Grüße
 
Hallo.

Versuche es mal damit:

Java:
public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 500; i++) {
                    openFrame("Frame " + i);
                }
            }
        });
    }

    private static void openFrame(String name) {
        JFrame frame = new JFrame(name);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new JLabel(name));
        frame.pack();
        frame.setVisible(true);
    }

😀

Grüße

Danke, das funktioniert wunderbar. Ist das sowas wie die Arbeit mit Threads? Und nein, ich werde keine 500 Fenster öffnen. xD

@thet1983: Na ich habe auch versucht das mit einer for-Schleife zu machen. Also in etwa so:
Java:
public class ClassName extends JFrame{
        public void ClassName() {
               for(int i = 0; i < arrayName.size(); i++) {
                   setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                   setBounds(100, 100, 500, 500);
                   setLocationRelativeTo(null);
                   setTitle("Name: " + i);
                   contentPane = new JPanel();
                   contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                   setContentPane(contentPane);
                   contentPane.setLayout(null);
                   setVisible(true);
              }
        }
}

Natürlich noch mit main-Funktion, etc. Aber das ist ja eben das Problem, dass man ja ein Fenster nur immer wieder überschreibt. ich wusste bis jetzt nicht, wie ich das umgehen kann.
 
Danke, das funktioniert wunderbar. Ist das sowas wie die Arbeit mit Threads? Und nein, ich werde keine 500 Fenster öffnen. xD

@thet1983: Na ich habe auch versucht das mit einer for-Schleife zu machen. Also in etwa so:
Java:
public class ClassName extends JFrame{
        public void ClassName() {
               for(int i = 0; i < arrayName.size(); i++) {
                   setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                   setBounds(100, 100, 500, 500);
                   setLocationRelativeTo(null);
                   setTitle("Name: " + i);
                   contentPane = new JPanel();
                   contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                   setContentPane(contentPane);
                   contentPane.setLayout(null);
                   setVisible(true);
              }
        }
}

Natürlich noch mit main-Funktion, etc. Aber das ist ja eben das Problem, dass man ja ein Fenster nur immer wieder überschreibt. ich wusste bis jetzt nicht, wie ich das umgehen kann.


Du erzeugst keine neuen Frames sondern setzt einfach nur die Werte immer wieder neu.
 

Zurück
Oben