Textfeld auslesen und in Liste speichern

wommers

Mitglied
Hallo,

ich habe folgendes Problem:

Ich erstelle in einer for-Schleife mehrere Textfelder.
Ich möchte nun dass ich die Textfelder auslesen kann und zwar alle die ich in verschiedener Anzahl erstellt habe.Danach soll dies in eine Liste eingetragen werden und in einer Tabelle soll zum schluss alles ausgegeben werden.

Mit dem befehl:

Java:
String eingabe=textfield.getText();

bekomme ich nur das letzte Textfeld. Ich brauche aber alle die ich erstellt habe!

Nun meine Fragen:
Wie kann ich die Textfelder auslesen?
Wie schreibe ich den Text aus den Textfeldern in eine Liste?
Wie gebe ich diese Liste in einer Tabelle aus?

Hier mein bisheriger Quellcode:

Java:
public class SpielernameGUI extends JFrame {

	/**
		 * 
		 */
	private static final long serialVersionUID = 1L;

	int spielerAnz;

	public SpielernameGUI(String title, int spielerAnz) {
		super(title);
		setSize(400, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.spielerAnz = spielerAnz;

		createGUI();
	}

	private void createGUI() {

		setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
		for (int i = 0; i < spielerAnz; i++) {
			int spielerNummer = i + 1;

			JTextField nameField = new JTextField("Name fŸr Spieler"
					+ spielerNummer);

			add(nameField, Component.CENTER_ALIGNMENT);

		}
		JButton tableButton = new JButton("Zur Tabelle");
		tableButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				TableGUI tGUI = new TableGUI("Tabellenansicht");
				tGUI.setVisible(true);

			}
		});
		add(tableButton, Component.CENTER_ALIGNMENT);
	}
}

Danke im Voraus!
 

chalkbag

Bekanntes Mitglied
Ich würde vorschlagen du lässt dir von deinem JFrame/Component alle Kinder mittels getComponents zurückgegeben. Dann prüfst du über instanceof, ob es sich hierbei um ein Textfeld handelt. Wenn du Panels ineinander schachtelst, musst du die Methode rekursiv umsetzten.

Hier ein Beispiel (ungetestet aus dem Netz), welches alle Elemente zusammen sammelt. Die Überprüfung auf das Textfeld fehlt hier noch.
Quelle: java - How to get all elements inside a JFrame? - Stack Overflow

Java:
public static List<Component> getAllComponents(final Container c) {
    Component[] comps = c.getComponents();
    List<Component> compList = new ArrayList<Component>();
    for (Component comp : comps) {
        compList.add(comp);
        if (comp instanceof Container)
            compList.addAll(getAllComponents((Container) comp));
    }
    return compList;
}

[EDIT] Alternativ könntest du die Textfelder natürlich auch direkt bei der Erstellung schon in einer Liste sammeln, auf welche du dann bei Bedarf zugreifen kannst.[/EDIT]
 
Zuletzt bearbeitet:

wommers

Mitglied
Hallo, erstmal danke für deine antwort. Leider bekomme ich das nicht so richtig hin :( wäre über weitere vorschläge sehr dankbar. ggf. auch Beispiele! MfG
 

chalkbag

Bekanntes Mitglied
Naja, als Anfänger kann das ruhig länger als 15 Minuten brauchen;)


Was die von mir gezeigte Methode macht und wie diese aufgerufen wird, hast du verstanden?
Also fehlt dir nur, wie du nur Textfelder berücksichtigst?
 

wommers

Mitglied
OK...also ich habe jetzt versucht es so zu machen wie oben beschrieben....leider bekomme ich es nicht so richtig hin und verstehe es auch nicht wirklich :/ kannst du mir zeigen wie es anhand meines quelltextes auszusehen hat?
 

Datacron

Mitglied
Hi,

hab lange nicht mehr mit Swing gearbeitet, aber so ca könnte es aussehen in deinem Code:
Java:
private Vector eingaben = new Vector();
        String eingabe = textfield.getText();
        this.addElementToList(eingabe);
        
        public void addElementToList(String e) {
            eingaben.add(e);
        }
        
        JList ausgabeListe = new JList(eingaben);

Alle Texte die du in einem Textfeld eingibts könntest du in einer Variable speichern und der methode addElementToList weitergeben. Die fügt es dann deiner Liste hinzu. Bitte berichtigen wenn ichs falsch aufgenommen hab :)
 

wommers

Mitglied
OK, ja das sieht vielversprechend aus. Aber ich bekomme es einfach nicht hin die Eingaben der Textfelder auszulesen und diese dann über deine geschriebene Methode in eine Liste einzufügen.

Das ist derzeit mein größtest Problem.

Java:
    public class SpielernameGUI extends JFrame {
     
        /**
             *
             */
        private static final long serialVersionUID = 1L;
     
        int spielerAnz;
     
        public SpielernameGUI(String title, int spielerAnz) {
            super(title);
            setSize(400, 300);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.spielerAnz = spielerAnz;
     
            createGUI();
        }
     
        private void createGUI() {
     
            setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
            for (int i = 0; i < spielerAnz; i++) {
                int spielerNummer = i + 1;
     
                JTextField nameField = new JTextField("Name fŸr Spieler"
                        + spielerNummer);
     
                add(nameField, Component.CENTER_ALIGNMENT);
     
            }
            JButton tableButton = new JButton("Zur Tabelle");
            tableButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    TableGUI tGUI = new TableGUI("Tabellenansicht");
                    tGUI.setVisible(true);
     
                }
            });
            add(tableButton, Component.CENTER_ALIGNMENT);
        }
    }

Am anfang steht ja "Name fŸr Spieler"+ spielerNummer" in allen Textfeldern.

Ich möchte dass ich dann erst den Text aus den Textfeldern nehme wenn ich auf den Button "Zur Tabelle" drücke.
Es muss sozusagen jede eingabe von jedem einzelnen Textfeld in eine nue Varable gespeichert werden und die muss dann der List hinzugefügt werden. Diese Liste soll es dann in einer Tabelle anzeigen.

MfG
 

grindelaner

Bekanntes Mitglied
ch würde vorschlagen du lässt dir von deinem JFrame/Component alle Kinder mittels getComponents zurückgegeben.

Warum machst du es kompliziert, wenn es auch einfach geht?

Wenn du eine Liste an JTextField haben willst, dann definiere doch einfach eine Liste von JTextField(s).
Also:
Java:
List<JTextField> liste = new ArrayList<JTextField>()
Du kannst so einfach ein TextFeld initialisieren in eine JComponenten adden und dann der Liste hinzufügen.

Also:
Java:
List<JTextField> liste = new ArrayList<JTextField>()

JTextField tf = new JTextField("text");
this.add(tf); //Ich bin in deinem Beispiel das JFrame...
liste.add(tf);
...

Über die Liste kannst du dann das JTextField ansprechen...
Wenn du dieses Element in der Liste änderst (z.B. tf.setText("asdlk")) wird dies automatisch in der UI mitgeändert...
 

Datacron

Mitglied
Du könntest textfelder in deiner schleife mit verschiedenen "ids" anlegen spielernummer = id da du sont denk ich mal probleme bekommen wirst mit den jtextFields, diese anzusprechen.

Java:
public class SpielernameGUI extends JFrame{

        private static final long serialVersionUID = 1L;
     
        int spielerAnz;
        private Vector eingaben;
        JTextField[] textFields;
        
        public SpielernameGUI(String title, int spielerAnz) {
            super(title);
            setSize(400, 300);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.spielerAnz = spielerAnz;
            this.eingaben = new Vector();
            createGUI();
        }
     
        private void createGUI() {
            
            
            int spielerNummer;

            setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
            for (int i = 0; i < spielerAnz; i++) {
                spielerNummer = i + 1;
                textFields[spielerNummer] = new JTextField("Name für Spieler" + spielerNummer);
                add(textFields[spielerNummer], Component.CENTER_ALIGNMENT);
            }

            JButton tableButton = new JButton("Zur Tabelle");
            tableButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    TableGUI tGUI = new TableGUI("Tabellenansicht");
                    tGUI.setVisible(true);
                    
                    for(int s = 0; s < textFields.length; s++) {
                	String name = textFields[s].getText();
                	addElementToList(name);
                    }
                }
            });
            add(tableButton, Component.CENTER_ALIGNMENT);
        }

        public void addElementToList(String e) {
            eingaben.add(e);
        }
       
        JList ausgabeListe = new JList(eingaben);
        

}


Oder wie grindelaner sagt :bae: die einzelnen Felder könntest dann mit dem jeweiligen index auslesen bei button druck
 
Zuletzt bearbeitet:

grindelaner

Bekanntes Mitglied
Es gibt so viele Möglichkeiten :)

TextField in eine Map packen...
TextField in eine Klasse packen wo du noch mehr Attribute hinterlegen kannst....
TextField direkt über JComponent ansprechen.... (Nicht so gut ;))
...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M textfeld auslesen und in liste einlesen Java Basics - Anfänger-Themen 2
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
P Textfeld auslesen Java Basics - Anfänger-Themen 4
D Leeres Textfeld nicht auslesen Java Basics - Anfänger-Themen 3
H Textfeld auslesen lassen Java Basics - Anfänger-Themen 11
G String-Wert aus Textfeld auslesen Java Basics - Anfänger-Themen 9
T text von textfeld auslesen und wieder reinschreiben Java Basics - Anfänger-Themen 10
C Mit Java Textfeld einer externen Anwendung auslesen Java Basics - Anfänger-Themen 9
S Excel Textfeld auslesen Java Basics - Anfänger-Themen 6
J double wert aus textfeld auslesen Java Basics - Anfänger-Themen 2
S Textfeld Wert auslesen Java Basics - Anfänger-Themen 2
B Textfeld auslesen Java Basics - Anfänger-Themen 5
G Textfeld zweimal Auslesen - Probleme Java Basics - Anfänger-Themen 6
W Aus Textfeld ein "MySQL Date" auslesen Java Basics - Anfänger-Themen 2
B textfeld mit enter auslesen klappt nicht Java Basics - Anfänger-Themen 12
Z Applet: Eingabe aus Textfeld auslesen und manipulieren Java Basics - Anfänger-Themen 3
J Leeres Textfeld auslesen Java Basics - Anfänger-Themen 6
L Aus ArrayList in Textfeld auslesen Java Basics - Anfänger-Themen 2
S Character aus Textfeld auslesen Java Basics - Anfänger-Themen 2
G Textfeld auslesen und in double-Variable speichern Java Basics - Anfänger-Themen 2
M Textfeld zurücksetzen Java Basics - Anfänger-Themen 3
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zeichen in einem Textfeld zählen und hinterlegen Java Basics - Anfänger-Themen 6
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M Wie kann ich im JAVA-GUI im Textfeld ein Array speichern Java Basics - Anfänger-Themen 4
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
E Wert in Textfeld schreiben Java Basics - Anfänger-Themen 1
E Anzahl Datensätze in Textfeld Java Basics - Anfänger-Themen 5
N Auf TextFeld aus anderer Klasse zugreifen ohne es zu übergeben Java Basics - Anfänger-Themen 3
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
B Datentypen Textfeld auf Nicht-Zahlen überprüfen Java Basics - Anfänger-Themen 10
B Wert aus TextFeld in Canvas benutzen Java Basics - Anfänger-Themen 0
S TextFieldFilter - Wenn Textfeld leer dann setze 0 Java Basics - Anfänger-Themen 9
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J Problem mit String von Textfeld Java Basics - Anfänger-Themen 13
N Textfeld- und Buttonerkennung einer Webseite Java Basics - Anfänger-Themen 6
R GUI - Liste mit Textfeld und Radiobuttons Java Basics - Anfänger-Themen 8
C Buttons über Textfeld beschriften Java Basics - Anfänger-Themen 10
E Eingabemöglichkeiten für Textfeld begrenzen Java Basics - Anfänger-Themen 6
D Canvas löschen über MouseEntered in Textfeld Java Basics - Anfänger-Themen 6
X Methoden [GWT] Dynamisches Textfeld PopUp erstellen Java Basics - Anfänger-Themen 6
F TextFeld überprüfen Java Basics - Anfänger-Themen 20
T Erste Schritte Textfeld übernimmt Größe nicht Java Basics - Anfänger-Themen 11
Joew0815 Homepage Textfeld füllen und Button klicken Java Basics - Anfänger-Themen 10
Kenan89 TextFeld und Zahlen Java Basics - Anfänger-Themen 14
B Textfeld aufpoppen lassen Java Basics - Anfänger-Themen 15
S Werte aus einem Textfeld lesen Java Basics - Anfänger-Themen 13
H Focus auf Textfeld in JOptionPane Java Basics - Anfänger-Themen 2
D Interpreter-Fehler NumberFormatException Textfeld Java Basics - Anfänger-Themen 24
J Textfeld für Taschenrechner Java Basics - Anfänger-Themen 3
U Drag&Drop von Tabelle in Textfeld Java Basics - Anfänger-Themen 3
M Inhalt Textfeld prüfen Java Basics - Anfänger-Themen 4
G Exception - Unvollständige Eingabe im Textfeld Java Basics - Anfänger-Themen 2
F Textfeld: String (x,xx) --> double Java Basics - Anfänger-Themen 8
F Text aus Textfeld1 in Textfeld 2 kopieren Java Basics - Anfänger-Themen 5
D Problem mit TextFeld Array Java Basics - Anfänger-Themen 18
R Textfeld "sperren", Text darf nicht eingegeben werden - wie realisierbar? Java Basics - Anfänger-Themen 2
I auf Textfeld aus anderer Klasse heraus zugreifen Java Basics - Anfänger-Themen 2
W OOP Datum aus Access in Textfeld schreiben ohne Stunden/Minuten/Sekunden Java Basics - Anfänger-Themen 2
J Escape taste geht ohne cursor im textfeld nicht. Java Basics - Anfänger-Themen 4
1 Textfeld aktiv beim starten des Programms Java Basics - Anfänger-Themen 5
A Grafisches Textfeld zur Ausgabe Java Basics - Anfänger-Themen 3
H Textfeld Werte Java Basics - Anfänger-Themen 14
A Mehrere verschieden Farben / Textfeld Java Basics - Anfänger-Themen 2
M Textfeld soll nur Zahlen erlauben Java Basics - Anfänger-Themen 26
G Textfeld und Label in einem Tab? Anfänger braucht Hilfe Java Basics - Anfänger-Themen 3
E Textfeld aktualisieren Java Basics - Anfänger-Themen 3
L Textfeld Inhalt löschen Java Basics - Anfänger-Themen 2
G Exception bei leerem Textfeld Java Basics - Anfänger-Themen 12
Antoras Klasse in einem Textfeld zeichnen Java Basics - Anfänger-Themen 4
J Zahl in Textfeld hinzufügen Java Basics - Anfänger-Themen 10
P Tab in textfeld einfügen Java Basics - Anfänger-Themen 4
C Textfeld Eingabe überprüfen! Java Basics - Anfänger-Themen 12
R textfeld größe definieren Java Basics - Anfänger-Themen 2
R Textfeld und zahlen? Java Basics - Anfänger-Themen 4
C alle möglichen Datumseingaben im Textfeld abfangen Java Basics - Anfänger-Themen 12
A Ausgabe einer variablen im textfeld Java Basics - Anfänger-Themen 3
L Nur ganzzahlige Zahlen im Textfeld Java Basics - Anfänger-Themen 3
B Text per Button von ein textfeld in das andere? Java Basics - Anfänger-Themen 9
S voreingestellte zahl im textfeld Java Basics - Anfänger-Themen 2
H Text aus Textfeld per Actionlistener in Label ausgeben. Java Basics - Anfänger-Themen 6
V editierbares textfeld Java Basics - Anfänger-Themen 2
R Frage zur Länge von Textfeld und String Java Basics - Anfänger-Themen 4
A Ein TextFeld als mit Echtzeitausgabe? (Wie bei der Console) Java Basics - Anfänger-Themen 3
G textfeld nur mit zahlen Java Basics - Anfänger-Themen 2
V Tastatur Abfrage im Lisener für eine Auswahl üder Textfeld Java Basics - Anfänger-Themen 8
G AWT-Textfeld zeichenanzahl begrentzen Java Basics - Anfänger-Themen 4
G Wie Text in Textfeld zentrieren? Java Basics - Anfänger-Themen 2
I Was in Swing, was in AWT zeichnen & Textfeld formatierba Java Basics - Anfänger-Themen 4
N in textfeld nur zahlen und punkl Java Basics - Anfänger-Themen 12
G Ausgabe des Java Ergebnisses in Textfeld Java Basics - Anfänger-Themen 17
S Array im Textfeld ausgeben Java Basics - Anfänger-Themen 7
B Leeres Textfeld, was nun. Java Basics - Anfänger-Themen 4
G Textfeld in Frame geht nicht! :( Java Basics - Anfänger-Themen 3
J Textfeld mit Eingabeprüfung Java Basics - Anfänger-Themen 10
N textfeld border . Java Basics - Anfänger-Themen 2
B Fokus auf ein Textfeld setzen? Wie? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben