JTextField zu ArrayList hinzufügen

Sasku

Mitglied
Moin Leute ..

hab hier n ziemlichen Anfänger fehler und bekomms einfach nicht gebacken n Textfeld zu einer Arraylist hinzuzufügen. :/


[Java] static List<JTextField> qualifikationent = new ArrayList<JTextField>();


[/code]

das ist meine ArrayList.. ich brauche Textfelder welche ich mit einem Button dann jeweils hinzufüge ( baue ich danach ein ... ) .. aber ich bekomms einfach nicht gebacken dass ich die Textfelder der ArrayList hinzufüge... :/





danke schon mal für die Hilfe 🙂
 
Java:
JTextField textField = new JTextField();
qualifikationent.add([COLOR=#339933][/COLOR]textField);

Warum ist deine Liste statisch?
Vermutlich damit du innerhalb des Listeners darauf zugreifen kannst, oder?
Tip: Getter-Methode.

VG,
EasyEagle
 
Eine Variable deswegen als static zu deklarieren ist zum Einen nicht schön und zum Anderen gefährlich, da du damit die Variable von der Instanz ihrer Klasse abkoppelst.
Ich empfehle dir sie entweder als "final" zu deklarieren wenn sie zur Laufzeit nicht neu initialisiert wird, oder einfach eine public Getter-Methode zu schreiben.

Hier mal ein Beispiel:
Java:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class ArrayListTest extends JFrame {

    private final List<JTextField> qualifikationent = new ArrayList<JTextField>();

    private final JLabel label;

    private final JButton button;

    public ArrayListTest() {

        setLayout(new FlowLayout());

        this.button = new JButton("add");
        this.button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // der direkte Zugriff funktioniert wenn die Variable "final" ist.
                // allerdings darf diese Variable zur Laufzeit nicht neu initialisiert werden.
                qualifikationent.add(new JTextField());
                // auf eine public get Methode darf auch die innerClass zugreifen
                label.setText("" + getQualifikationent().size());
                validate();
            }
        });
        add(button);

        this.label = new JLabel();
        this.label.setText("" + qualifikationent.size());
        add(label);

        pack();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null); // has to be called after pack() !!!!!
        setVisible(true);
    }

    public List<JTextField> getQualifikationent() {
        return qualifikationent;
    }

    public static void main(String[] args) {
        new ArrayListTest();
    }
}

Viel Erfolg,
EasyEagle
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben