Ich möchte eine eindimensionale Liste erstellen, deren Länge ich erst zur Laufzeit des Programms weiß. Diese Länge wurde vorher separat in ein Textfeld eingegeben und gespeichert. Jetzt möchte ich anhand dieser Länge jeweils ein Textfield und einen Radiobutton anzeigen lassen.
Welche Methoden / Komponenten verwende ich am geschicktesten?
ja, das schon, nur muss ich ja weiter mit den Textfeldern und den Radiobuttons arbeiten können. Oder gibt es eine Möglichkeit, "variable Variablennamen" für solch Fälle zu erstellen?
Danke für deine Mühe und Hilfe, ich bin hier noch am basteln. Leider muss ich sagen, habe ich GUI-Programmieren mit Java.AWT.Container gelernt und schaff es nicht, die ArrayList in meinen Container c zu integrieren. Gibts da nen Trick?
hier mal eine kleine Hilfe...ist zwar mit "heißer Nadel" genäht, aber vom Grundprinzip sollte es klar sein, auch wenn ich ein Array, anstelle einer ArrayList nutze...
Java:
publicstaticvoidmain(String[] args){String[] deineListe ={"bla1","bla2","bla3"};JFrame f =newJFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300,300);
f.setLocationRelativeTo(null);addTheComponentsToTheFrame(f, deineListe);
f.setVisible(true);}publicstaticvoidaddTheComponentsToTheFrame(JFrame f,String[] s){JPanel p =newJPanel();
p.setLayout(newGridLayout(s.length,2));for(int i =0; i < s.length; i++){
p.add(newJTextField(s[i]));
p.add(newJRadioButton(s[i]));
f.add(p);}}
Der Lösungsansatz ist klasse, vielen Dank hierfür!! Wie kann ich denn danach auf die einzelnen JTextFields zugreifen / auslesen, wenn ich z.b. via OK-Knopf die Werte mir in ne ArrayList oder Ähnliches reinpacken will? Geht das direkt über das Panel?
bspw. so...wichtig ist das du deine Variablen, die du nutzen willst, auch einen entsprechenden Focus besitzen und nicht nur in den Methoden "Leben"....
Java:
importjava.awt.BorderLayout;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JTextField;classAnyClassimplementsActionListener{publicstaticvoidmain(String[] args){newAnyClass();}JButton b;String[] deineListe ={"bla1","bla2","bla3"};JTextField[] tf =newJTextField[deineListe.length];publicAnyClass(){JFrame f =newJFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300,300);
f.setLocationRelativeTo(null);addTheComponentsToTheFrame(f);
f.setVisible(true);}publicvoidaddTheComponentsToTheFrame(JFrame f){JPanel p =newJPanel();
p.setLayout(newGridLayout(deineListe.length,2));for(int i =0; i < deineListe.length; i++){
tf[i]=newJTextField();
p.add(tf[i]);}
f.add(p);JPanel south =newJPanel();
b =newJButton("Ok");
b.addActionListener(this);
south.add(b);
f.add(south,BorderLayout.SOUTH);}@OverridepublicvoidactionPerformed(ActionEvent e){if(e.getSource()== b){for(int i =0; i < deineListe.length; i++){System.out.println((i +1)+". Textfeld \t"+ tf[i].getText());}System.out.println();}}}