Swing Komponenten per Schleife auf JFrame

Heady86

Bekanntes Mitglied
Hi zusammen,

bin grad wieder auf eine Frage gestoßen als ich etwas mit Swing experimentiert habe, die mir früher schonmal in die Quere gekommen ist.

WIe kann ich Komponenten auf ein JFrame per Schleife adden?

Also sowas funktioniert nicht, es sei denn ich mach noch was falsch.. ???:L

Java:
.....
JFrame j = JFrame();
for(int i=0; i<5; i++) {
   JButton jb = new JButton(); 
   j.add(jb);
}
....

mit dem Ergebnis dass ich dann ja nur einen Button auf dem Frame hab.

Danke schonmal
 
erstes Falsch-machen:
kompliziertes Programm programmieren und Fehler vermuten die gar nicht da sind,
wirf die Schleife raus und schreibe ganz simpel

j.add(new JButton("a"));
j.add(new JButton("b"));

auch von diesen beiden Test-Buttons wird nur einer drin sein, denn darüber entscheidet das Layout,
schreibe z.B.
j.setLayout(new FlowLayout());
davor, dann hast du das StandardLayout eines JPanels, welches mehrere Komponente per einfaches add() erlaubt


Lesson: Laying Out Components Within a Container (The Java™ Tutorials > Creating a GUI With JFC/Swing)
 
tja, ein JFrame bzw. dessen ContentPane hat ein anderes StandardLayout als ein normales JPanel 😉

edit: da hast du dein Posting aber editiert, carolin

Java:
    /**
     * Called by the constructor methods to create the default 
     * <code>contentPane</code>. 
     * By default this method creates a new <code>JComponent</code> add sets a 
     * <code>BorderLayout</code> as its <code>LayoutManager</code>.
     * @return the default <code>contentPane</code>
     */
    protected Container createContentPane() {
        JComponent c = new JPanel();
        c.setName(this.getName()+".contentPane");
        c.setLayout(new BorderLayout() {
            /* This BorderLayout subclass maps a null constraint to CENTER.
             * Although the reference BorderLayout also does this, some VMs
             * throw an IllegalArgumentException.
             */
            public void addLayoutComponent(Component comp, Object constraints) {
                if (constraints == null) {
                    constraints = BorderLayout.CENTER;
                }
                super.addLayoutComponent(comp, constraints);
            }
        });
        return c;
    }
 
Java:
j.setLayout(new FlowLayout());

danke, das hat geholfen..

Java:
Bei einer unbestimmten Anzahl ist eine Schleife schon sinnvoll (und auch möglich).

Genau, deswegen hab ich gefragt weil ich die Anzahl noch nicht kenne. Mit der obrigen Anweisung davor, tuts aber auch mit der Schleife ohne Probs.

Danke und schönes Wochenende
 

Neue Themen


Zurück
Oben