Hallo!
Nach seehr langer Zeit möchte ich jetzt mal ein altes Thema aufwärmen; es gab bei mir über Monate einfach andere Prioritäten.
Hier funktionierender Kode (Anordnung von 4 Panel in einem Frame, ohne Schleifen):
Wie kann ich mittels Schleifenzähler Panels anordnen?
Und hier einer meiner nicht zufriedenstellenden Ansätze:
Es sind hier nur vier Panels, aber es geht ums Prinzip. Offensichtlich werden die Panels nicht richtig angeordnet, sie werden diagonal angeordnet. Es sollen aber 2 Zeilen und 2 Spalten sein. Wie hängt man die Componenten hinter ...addGroup... an?
Meine Frage ist: Wie muß die exakte Syntax lauten?
Ich denke, es ist nicht schwer, aber ich habe keine Idee im Moment. Habe schon andere Varianten versucht.
Es geht definitiv um Scheifen deren Laufvariablen sich ändern sollen.
Danke für Hilfe.
Nach seehr langer Zeit möchte ich jetzt mal ein altes Thema aufwärmen; es gab bei mir über Monate einfach andere Prioritäten.
Hier funktionierender Kode (Anordnung von 4 Panel in einem Frame, ohne Schleifen):
Java:
import java.awt.Font;
import javax.swing.GroupLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.GroupLayout.SequentialGroup;
import javax.swing.JLabel;
public class GroupLayout_0 {
private static int getCol () { return (int) (Math.random() * 255); }
public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
JPanel panel0 = new JPanel();
GroupLayout layout = new GroupLayout(panel0);
GroupLayout.ParallelGroup horizontalGroup = layout.createParallelGroup()
, verticalGroup = layout.createParallelGroup();
JPanel p[] = new JPanel[4];
for (int i = 0; i < 4; i++) {
p[i] = new JPanel();
JLabel l0 = new JLabel(String.valueOf(i));
l0.setFont(new Font(Font.SERIF, Font.PLAIN, 40)); p[i].add(l0);
int col1 = getCol(); int col2 = getCol(); int col3 = getCol();
p[i].setBackground(new java.awt.Color(col3, col2, col1));
}
layout.setHorizontalGroup(horizontalGroup);
SequentialGroup[] seqGroup1 = new GroupLayout.SequentialGroup[1];
seqGroup1[0] = layout.createSequentialGroup();
horizontalGroup.addGroup(seqGroup1[0]);
layout.setVerticalGroup(verticalGroup);
SequentialGroup[] seqGroup2 = new GroupLayout.SequentialGroup[1];
seqGroup2[0] = layout.createSequentialGroup();
verticalGroup.addGroup(seqGroup2[0]);
seqGroup1[0].addGroup(layout.createParallelGroup()
.addComponent(p[0])
.addComponent(p[1]));
seqGroup1[0].addGroup(layout.createParallelGroup()
.addComponent(p[2])
.addComponent(p[3]));
seqGroup2[0].addGroup(layout.createParallelGroup()
.addGroup(layout.createSequentialGroup()
.addComponent(p[0])
.addComponent(p[1]))
.addGroup(layout.createSequentialGroup()
.addComponent(p[2])
.addComponent(p[3])));
panel0.setLayout(layout);
f.add(panel0);
f.setSize(300, 300);
f.setVisible(true);
}
}
Wie kann ich mittels Schleifenzähler Panels anordnen?
Und hier einer meiner nicht zufriedenstellenden Ansätze:
Java:
SequentialGroup x1;
x1 = seqGroup1[0].addGroup(layout.createParallelGroup());
for (int i = 0; i < 2; i++)
x1.addComponent(p[i]);
x1 = seqGroup1[0].addGroup(layout.createParallelGroup());
for (int i = 2; i < 4; i++)
x1.addComponent(p[i]);
//------------------------
SequentialGroup y0;
y0 = seqGroup2[0].addGroup(layout.createParallelGroup());
SequentialGroup y1;
y1 = y0.addGroup(layout.createSequentialGroup());
for (int i = 0; i < 2; i++)
y1.addComponent(p[i]);
y1 = y0.addGroup(layout.createSequentialGroup());
for (int i = 2; i < 4; i++)
y1.addComponent(p[i]);
Es sind hier nur vier Panels, aber es geht ums Prinzip. Offensichtlich werden die Panels nicht richtig angeordnet, sie werden diagonal angeordnet. Es sollen aber 2 Zeilen und 2 Spalten sein. Wie hängt man die Componenten hinter ...addGroup... an?
Meine Frage ist: Wie muß die exakte Syntax lauten?
Ich denke, es ist nicht schwer, aber ich habe keine Idee im Moment. Habe schon andere Varianten versucht.
Es geht definitiv um Scheifen deren Laufvariablen sich ändern sollen.
Danke für Hilfe.