Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich möchte 2 RadioButtons auf einem Panel anzeigen, dies soll als Ereignis durch eine ActionPerformed() Methode
ausgelöst werden und mehrmals wiederholt werden können.
Mein Problem ist hierbei, dass die RadioButtons beim wiederholten ausführen der ActionPerformed() Methode sich
nebeneinander anordnen, so dass immer mehr RadioButtons im Fenster zu sehen sind.
Mein Ziel ist es zu erreichen das immer nur 2 RadioButtons angezeigt werden.
Code:
public class test {
JFrame fenster = new JFrame("test");
private JLabel label1 = new JLabel();
private JPanel panel2 = new JPanel();
private JPanel panel3 = new JPanel();
public void zeigeFenster(){
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setVisible(true);
fenster.setLayout(new GridLayout(2,1));
panel3.setLayout(new GridLayout(5,4));
panel2.setLayout(new GridLayout(2,1));
label1.setText("text");
label1.add(new JRadioButton("test1"));
for (int i = 0; i < 20; i++) {
final int j = i;
panel3.add(new JButton(new AbstractAction("" + i) {
public void actionPerformed(ActionEvent e) {
panel2.add(new JRadioButton("testA" + j));
panel2.add(new JRadioButton("testB"+ j));
label1.setText("text" + j); //der Text im JLabel lässt sich überschreiben
//warum funktioniert das nicht mit den RadioButtons auf dem JPanel???
label1.add(new JRadioButton("testC"+ j));//warum wird auf dem JLabel der JRadioButton
//nicht angezeigt??? Ich hatte gehofft die JRadioButtons würden sich auf dem JLabel so verhalten wie der Text...
}
}));
}
panel3.add(label1);
fenster.add(panel2);
fenster.add(panel3);
fenster.pack();
}
}
du wirst bestimmt immer < 20 RadioButton erzeugen.
Pack die bestimmt Anzahl an Button in eine Box.
Versuchs mal damit:
Code:
JRadioButton[] radio;
String[] s ={"A", "b", "d"};
int i = s.length;
radio = new JRadioButton[s.length];
for(i = 0; i < s.length; i++)
{
radio[i] = new JRadioButton(s.length);
radio[i].addActionListenr(this);
}
mal auf die schnelle. Und pack die RadfioButtons in eine Box.
OK ... trotzem sollten die RadioButtons nicht dem JLabel hinzugefügt werden.
Du solltest über panel.remove bzw. panel.removeAll die überflüssigen JRadioButtons löschen und dann neu einfügen - ein ordentlicher LayoutManager hilft dabei.
Aber irgendwie find ich das immer noch alles sehr konfus
Du solltest über panel.remove bzw. panel.removeAll die überflüssigen JRadioButtons löschen und dann neu einfügen - ein ordentlicher LayoutManager hilft dabei.