TextField auslesen & in Objekteigenschaften speichern

rorton

Mitglied
Hallo Leute,

hab zwar die Suche schon etwas verwendet, aber bin noch nicht so ganz schlau geworden.
Vielleicht könnt ihr mir einen Denkanstoß geben...

Ich habe 2 Klassen:

MainGui und Movie

MainGui, wie der Name schon sagt besitzt mehrere JTextFields und einen OK-Button.
Im Prinzip möchte ich in diesen Feldern die Werte der Instanzvariablen der Klasse Movie eintragen und mit dem OK-Button ein neues Movie-Objekt mit diesen Werten der Textfelder speichern.

Wie starte ich da am Besten?

Mit Feldname.getText() die Werte in einem String-Array speichern und mit einer Methode in der Klasse Movie zuweisen? Ich hab aber nicht nur Strings, sondern auch Date und int dabei!

StringBuilder mit Trennzeichen wird in diesem Fall auch nicht viel Sinn machen oder?

Danke für die Hilfe...
 

Cru

Aktives Mitglied
Wenn ich richtig verstehe was du machen willst, gibts doch eigentlich nicht viel zu machen..?

Dein "OK"-Button besitzt einen ActionListener, der eben die Werte aus deinen TextFields ausliest, umwandelt in das gewünschte Format(z.B. Date) und daraus dann ein Objekt Movie bildet...

Edit: Zum Formatieren eines Datums, kann man den ausgelesenen String einfach splitten...war heute glaube ich schonmal in einem Thread Thema ;)
 
Zuletzt bearbeitet:

Network

Top Contributor
Also ich hab das jetzt so verstanden, dass deine Int-Werte beispieslweise mit im auszulesenen TextFeld stehen... Also in einem Text (?)

Da könntest du natürlich, mehrere ArrayLists verwenden, die in einer übergeordneten ArrayList sich befinden. Also 3 ArrayLists in einer. Jedes einem anderen Datentyp zugeordnet!
Und dann gleich am Anfang des einlesens die Werte aussortieren.

Soweit ich weiss, jedoch, werden die Werte mit getText() sofort als String verwertet. Es macht also keinen Unterschied ob du die Daten vorher aussortierst oder danach.

Desweiteren gibt es eig. nurnochmal auf die Befehle hinzuweisen:
Java:
Integer int = Integer.parseInt( string );
und
Java:
Date date = SimpleDateFormat.parse( string );
 
Zuletzt bearbeitet:

rorton

Mitglied
ja, rein theoretisch weiß ich was du meinst, aber praktisch schaut es anders aus! :)

Java:
public void actionPerformed(ActionEvent e) {
	  String action_com = e.getActionCommand();
          //mit dem button save die werte auslesen
          if (action_com.equals("save")) {
          fieldInput = field.getText();
          fieldInput2 = field2.getText();
		
          //neues Objekt erzeugen und die Werte zuweisen
          Movie m1 = new Movie();
          m1.setName(fieldInput);
          m1.setActor(fieldInput2);
        }
        else if (action_com.equals("print")) {
                //das funzt schon nicht! m1 ist aber global deklariert!
        	System.out.println(m1.toString());
        }

Mein ansatz ist sicher totaler Bullshit! Vorallem will ich ja dynamisch neue Movie-Objekte erzeugen, nicht so wie in dieser Methode wo alles hart codiert ist!

Diese erzeugten objekte möchte ich dann wenn möglich auch noch in einer arraylist speichern können!
 

Cru

Aktives Mitglied
Sowas vielleicht?

Java:
		buttonOk.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				leseWerteAus();	
			}

			private void leseWerteAus() {
				String string1 = field1.getText();
				int int1 = Integer.valueOf(field2.getText());
				Movie mov = new Movie();
				mov.setString1(string1);
				mov.setInt1(int1);
				movieListe.add(mov);//vorher mal eine ArrayList<Movie> anlegen
			}

Edit: Könntest auch mal deine Movie-Klasse zeigen^^
 
Zuletzt bearbeitet:

rorton

Mitglied
So, hier meine sehr vereinfachten Klassen:

MainGui mit Main-Methode zum Testen:

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 MainGui extends JFrame implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private JLabel labelName, labelActor;
	private JTextField fieldName, fieldActor;
	private JButton buttonSave, buttonShow;
	private List<Movie> movieList;
	
	
	public MainGui() {
		
		super();
		this.init();
	
	}
	
	public void init() {
		
		this.setSize(200,400);
		this.setLayout(new FlowLayout());
		this.setResizable(false);
		this.setVisible(false);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	
		this.add(this.getLabelName());
		this.add(this.getFieldName());
		this.add(this.getLabelActor());
		this.add(this.getFieldActor());
		this.add(this.getButtonSave());
		this.add(this.getButtonShow());

	}
	
	public JLabel getLabelName() {
		if (labelName == null) {
			labelName = new JLabel("Name");
		}
		return labelName;	
	}
	
	public JLabel getLabelActor() {
		if (labelActor == null) {
			labelActor = new JLabel("Actor");
		}
		return labelActor;	
	}
	
	public JTextField getFieldName() {
		if (fieldName == null) {
			fieldName = new JTextField(10);
		}
		return fieldName;	
	}
	
	public JTextField getFieldActor() {
		if (fieldActor == null) {
			fieldActor = new JTextField(10);
		}
		return fieldActor;
	}
	
	public JButton getButtonSave() {
		if (buttonSave == null) {
			buttonSave = new JButton("Save");
			buttonSave.addActionListener(this);
			buttonSave.setActionCommand("save");
		}
		return buttonSave;	
	}
	
	public JButton getButtonShow() {
		if (buttonShow == null) {
			buttonShow = new JButton("Show");
			buttonShow.addActionListener(this);
			buttonShow.setActionCommand("show");
		}
		return buttonShow;	
	}
	
	public List<Movie> getMovieList() {
		if (movieList == null) {
			movieList = new ArrayList<Movie>();
		}
		return movieList;
	}
	
	public void getValues() {
		
		String nameString = fieldName.getText();
		String actorString = fieldActor.getText();
		
		Movie movie = new Movie();
		movie.setName(nameString);
		movie.setActor(actorString);
		
		movieList.add(movie);
		
	}
	
	public void showMovieList()  {
		
		for (Movie movie : movieList) {
			System.out.println(movie.toString());
		}
	}
	
	public void actionPerformed(ActionEvent e) {
		String action_com = e.getActionCommand();
        if (action_com.equals("save")) {
        	this.getValues();
        } 
        else if (action_com.equals("show")) {
        	this.showMovieList();
        }
	}
	
	
	public static void main(String[] args) {
		
		MainGui m1 = new MainGui();
		t1.setVisible(true);
		
	}
	
}

und die Movie-Klasse:

Java:
public class Movie {
	
	private String name;
	private String actor;
	

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getActor() {
		return actor;
	}

	public void setActor(String actor) {
		this.actor = actor;
	}
	
	public String toString() {
		
		return this.name + " " + this.actor;
	}

}

funktioniert noch nicht ganz...
wenn ich das ganze nach dem MVC-Pattern aufbauen würde, wo würde ich dann die ArrayList reinstecken bzw. würde ich die neuen Movie-Objekte auch in der actionPerformed erzeugen?
 
Zuletzt bearbeitet:

rorton

Mitglied
Sorry, habs gefunden!
Wenn ich schon eine Methode zur Erstellung der ArrayList verwende sollte ich diese wohl auch aufrufen! :)

aber meine Frage zum MVC bleibt...
MainGui und Movie würde unter View fallen, oder? Im MainController laufen dann die Interaktionen.. und soll ich eine eigene Klasse mit der movieList erstellen und die dann ins Model stecken?

danke leute, ich geh jetzt ins bett und werde mich morgen früh mit java aufwecken! :D
 

rorton

Mitglied
Guten Morgen an alle..

hab noch ein Problem mit der Formatierung meines Datums:

Obwohl ich im Konstruktor von SimpleDateFormat nur Tag, Monat und Jahr angebe, bekomme ich folgende Ausgabe: Fri Oct 29 00:00:00 CEST 2010

Java:
             String Buffer = field.getText();

             try{
                 SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
                 Date date = format.parse(Buffer);
              
                 //diese Methode erwartet den Typ Date
                 Objektname.setDate(date);
                 
             }catch(ParseException e){
                 e.printStackTrace();
             }
 

rorton

Mitglied
ok, aber wie genau soll ich das jetzt verstehen..

Aus meinem JTextField bekomme ich ja schon einen String, z.B "12.01.2001"!
Wie konvertiere ich nun diesen String in Date, damit auch wirklich nur das Datum, ohne Uhrzeit, ausgegeben wird?
 

Cru

Aktives Mitglied
Ich verstehe ehrlich gesagt das Problem nicht...wieso gibst du nicht einfach den String aus?

Oder wofür brauchst du ein Datum? Möchtest du mit diesem Objekt weiterarbeiten?
Sonst würdest du ein Datum als Objekt doch gar nicht brauchen...
 

rorton

Mitglied
in meiner Klasse gibt es eine Eigenschaft - ReleaseDate vom Typ Date!

Aus meinem Textfeld bekomme ich ja einen String.. diesen String muss ich in Date umwandeln, um es dann an die Objekteigenschaft weitergeben zu können.

Die Objekte sammle ich dann wie oben beschrieben in einer ArrayList, welche ich dann wenn möglich in einen JTable einlesen möchte.. Daher möchte ich beim Datum nur dd.MM.yyyy haben, keine Uhrzeit im Table haben..
 

rorton

Mitglied
ja schon, aber sollte eine Eigenschaft, die eigentlich ein Datum ist, als Typ ein String sein..
Spätestens wenn ich die 10 ältesten filme per Datum ausgeben möchte wirds sicher blöd oder? :)
 

Cru

Aktives Mitglied
Nein, wieso?

Du arbeitest doch trotzdem mit den Werten aus dem Textfeld.

Alternativ: Datum speichern, wenn du es ausgeben lassen willst, lässt du dir nur den String vom SimpleDateFormat ausgeben...wäre aber glaube ich nicht das Wahre ;)

Ein Objekt vom Typ Date hat immer das von dir beschrieben Format.
 
J

JohannisderKaeufer

Gast
Java:
String Buffer = field.getText();
 
             try{
                 SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
                 Date date = format.parse(Buffer);
              
                 //diese Methode erwartet den Typ Date
                 Objektname.setDate(date);

                 //So macht man aus dem Date wieder einen String vom Typ dd.MM.yyyy
                 String string = format.format(date);
                 
             }catch(ParseException e){
                 e.printStackTrace();
             }
 

rorton

Mitglied
Danke, das hat super geholfen..

Hat jemand noch einen Tipp zu folgendem Problem:

Ich habe 5 JTextField und einen Button.. Der User muss in jedes Feld einen Text eingeben, sozusagen ein Pflichtfeld. Wenn der User nun auf den Button klickt,soll überprüft werden, ob im Textfeld auch etwas steht.. wenn ja können die Inhalte der Textfelder ausgelesen werden und in einem passenden Objekt gespeichert werden.. wenn nein einfach einen JDialog zeigen damit eine Eingabe gemacht werden muss..

Kann ich das mit if-abfragen lösen ? zum beispiel so:


Java:
public void validateField1() {
 String buffer = textField1.getText();
 if(buffer.equals("")) {
  JOptionPane.showMessageDialog.....bla,bla..
 }
 else {
 passendesObjekt.setText(buffer);
 }

}

nur was mach ich, wenn ich eben mehrere Felder habe, und die Objekte in einer seperaten Methode befüllen möchte und dann vielleicht noch in einer ArrayList speichern will?

Gibt es da einen einfacheren Weg? Ich glaube ich denke zu kompliziert! :rtfm:
 

Network

Top Contributor
Dein ganz unten beschriebenes Problem ist mir jetzt nicht ganz klar. Versuche aber mal auf das bis jetzt verstandene einzugehen:

Wenn du wissen möchtest ob da was drin steht oder nicht, kannst du auch nach
Java:
buffer == null
fragen.

Wenn du mehrere Textfelder hast, sieht das nicht weiter anderst aus.
Du erweiterst einfach deine If-Abfrage mit "&&" oder "||"
&& = und
|| = oder

Wenn beide (in dem Bsp nur 2) Textfelder leer sind dann...
Java:
if(( textField1.getText() == null )&&( textField2.getText() == null ))
{
      ...
}

Wenn eines der beiden Textfelder leer ist dann...
Java:
if(( textField1.getText() == null )||( textField2.getText() == null ))
{
      ...
}
 

rorton

Mitglied
du triffst mein problem eigentlich sehr genau, danke!

das heißt auch mit 10 textfeldern würdest du eine if-abfrage mit dann doch mehreren && empfehlen?
 

Network

Top Contributor
Da du "&&" erwähnst, nehme ich an du willst, dass nicht alle Felder ausgefüllt sein müssen. Aber mindestens eins.

Nun da könntest du als Alternative deinen String "buffer" mit allen Zeilen füllen.
Java:
buffer = textField1.getText() + textField2.getText() ...
und diesen dann einmal überprüfen. Wenn dieser dann null ergibt, heißt das, dass ALLE leer sein müssten.

Auf jedenfall kann man es so zusammenfassen.
 

Michael...

Top Contributor
Nun da könntest du als Alternative deinen String "buffer" mit allen Zeilen füllen.
Java:
buffer = textField1.getText() + textField2.getText() ...
und diesen dann einmal überprüfen. Wenn dieser dann null ergibt, heißt das, dass ALLE leer sein müssten.
getText() wird niemals null (höchstens "null") liefern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Swing Text aus Textfield auslesen AWT, Swing, JavaFX & SWT 8
C Swing TextField auslesen AWT, Swing, JavaFX & SWT 21
R Textfield auslesen auf Anforderung AWT, Swing, JavaFX & SWT 4
S Fehler beim Auslesen des Textes im textfield AWT, Swing, JavaFX & SWT 8
Juelin Eingabensteuerung mit Textfield AWT, Swing, JavaFX & SWT 20
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
K JavaFX Taschenrechner textField auf 10stellen begrenzen AWT, Swing, JavaFX & SWT 26
Z textField.getText = null AWT, Swing, JavaFX & SWT 15
officialmaxl JavaFX Textfield getTextfield() in String speichern AWT, Swing, JavaFX & SWT 1
L Swing Wert vom Textfield in Array List hinzufügen AWT, Swing, JavaFX & SWT 2
R Textfield lässt sich nicht positionieren AWT, Swing, JavaFX & SWT 1
B JavaFX ListView in Kombination mit TextField AWT, Swing, JavaFX & SWT 5
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
L JavaFX Ich suche das passende Textfield Event AWT, Swing, JavaFX & SWT 1
Bluedaishi JavaFX JFoenix TextField KeyEvent AWT, Swing, JavaFX & SWT 2
F JavaFX Aktuelle Zeit in einem TextField anzeigen AWT, Swing, JavaFX & SWT 7
F JavaFX textField Ausgabe automatisch kopieren AWT, Swing, JavaFX & SWT 7
M JavaFX String aus TextField reagiert nicht wie erwartet AWT, Swing, JavaFX & SWT 3
S JavaFX TextField auf Datentyp prüfen AWT, Swing, JavaFX & SWT 1
M JavaFX .setCellFactory () mit TextField AWT, Swing, JavaFX & SWT 4
L TextField Listener AWT, Swing, JavaFX & SWT 13
L TextField Eingabe in andere GUI übernehmen AWT, Swing, JavaFX & SWT 1
C JavaFX mit .setText() befülltes Textfield liefert anschließend mit .getText() den ursprünglichen Wert? AWT, Swing, JavaFX & SWT 1
K JavaFX Combobox, Textfield & setOnMouseClicked AWT, Swing, JavaFX & SWT 2
U Java FX Warten auf Textfield eingabe AWT, Swing, JavaFX & SWT 17
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
S Buttons und TextField automatisch vergrößern AWT, Swing, JavaFX & SWT 8
Y Listview Textfield vergrößern, Schrift anpassen AWT, Swing, JavaFX & SWT 0
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
U Eingabe von TextField in variable speichern AWT, Swing, JavaFX & SWT 2
J Eigene Klasse auf Basis Textfield in SceneBuilder anzeigen AWT, Swing, JavaFX & SWT 4
I JavaFX TextField auf Eingabe prüfen AWT, Swing, JavaFX & SWT 3
D JavaFX Nur Zahlen in Textfield AWT, Swing, JavaFX & SWT 4
D Textfield bei starten füllen. AWT, Swing, JavaFX & SWT 5
H Textfield bleibt im Hintergrund AWT, Swing, JavaFX & SWT 2
C JavaFX Zugriff auf TextField aus einer anderen Klasse AWT, Swing, JavaFX & SWT 4
P LayoutManager TextField.setSize(); in einem FlowLayout AWT, Swing, JavaFX & SWT 3
T Internes Event-handling in TextField/JTextField AWT, Swing, JavaFX & SWT 2
1 Textfield: jede Buchstabe ein Bild AWT, Swing, JavaFX & SWT 2
U Swing NullPointerException trotz Referenz auf Textfield & Button AWT, Swing, JavaFX & SWT 6
S LayoutManager TextField verschwindet / wird klein AWT, Swing, JavaFX & SWT 4
S Button in Textfield ziehen AWT, Swing, JavaFX & SWT 4
T Einen Variablen Wert in einem TextField AWT, Swing, JavaFX & SWT 4
K Viele Textfield mit Hilfe eines MousListener leeren - möglich? AWT, Swing, JavaFX & SWT 8
F Swing TextField Eingabe in Variable umwandeln um zum Beispiel zu rechnen. AWT, Swing, JavaFX & SWT 3
G JavaFX TextField Eingabe formatieren/einschränken AWT, Swing, JavaFX & SWT 2
C Integer in ein Textfield schreiben. AWT, Swing, JavaFX & SWT 4
P TextField beim klicken von JButton speichern AWT, Swing, JavaFX & SWT 17
MiMa Integer Zahl in Textfield ausgeben AWT, Swing, JavaFX & SWT 12
K Per Textfield Methode ausführen AWT, Swing, JavaFX & SWT 6
B JComboBox ans Textfield gelangen AWT, Swing, JavaFX & SWT 4
A Größe von Textfield bestimmen AWT, Swing, JavaFX & SWT 9
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
T jPanels im jFrame bewegen - Auch ohne Textfield? AWT, Swing, JavaFX & SWT 4
B AWT Mit TextField Zahlen einlesen lassen AWT, Swing, JavaFX & SWT 34
A Button und Textfield AWT, Swing, JavaFX & SWT 4
A TextField und Label AWT, Swing, JavaFX & SWT 8
H gui textfield AWT, Swing, JavaFX & SWT 5
A TextField: Textfeld teilweise editierbar AWT, Swing, JavaFX & SWT 2
E Button in TextField eibetten? AWT, Swing, JavaFX & SWT 4
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
W textfield zentriert AWT, Swing, JavaFX & SWT 2
N Swing Textfield listener AWT, Swing, JavaFX & SWT 2
H Zeich in einem TextField farblich markieren?! AWT, Swing, JavaFX & SWT 5
D Swing [BoxLayout] Nur TextArea und nicht TextField vergroessen AWT, Swing, JavaFX & SWT 2
D Textfield auswerten AWT, Swing, JavaFX & SWT 4
M Swing InputVerifer auf TextField AWT, Swing, JavaFX & SWT 14
B setText() auf TextField mit Document AWT, Swing, JavaFX & SWT 2
G Problem mit Textfield AWT, Swing, JavaFX & SWT 2
G Den Inhalt von einem Textfield aktualisieren AWT, Swing, JavaFX & SWT 6
D Inhalt von Textfield nach ComboBox AWT, Swing, JavaFX & SWT 2
E Swing Button ActionListener Infos aus Textfield und ComboBox AWT, Swing, JavaFX & SWT 3
G TextField im Hintergrund AWT, Swing, JavaFX & SWT 2
Z TextField aus ActionListener von JButton verändern AWT, Swing, JavaFX & SWT 10
O ComboBox hinter TextField? AWT, Swing, JavaFX & SWT 8
T Checkbox & Textfield AWT, Swing, JavaFX & SWT 5
M Beschränkung auf Nur-Zahleneingabe in Textfield klappt nicht AWT, Swing, JavaFX & SWT 3
N Textfield feste größe? AWT, Swing, JavaFX & SWT 1
M Datum Textfield AWT, Swing, JavaFX & SWT 6
S TextField fehler AWT, Swing, JavaFX & SWT 3
D Problem mit TextField AWT, Swing, JavaFX & SWT 22
C Textfield Background auf Standard zurücksetzen AWT, Swing, JavaFX & SWT 2
V keyListener soll textfield adden AWT, Swing, JavaFX & SWT 2
R TextField bringt NullPointerException bei setVisible() AWT, Swing, JavaFX & SWT 12
J JComboBox Eintrag soll TextField aktualisieren AWT, Swing, JavaFX & SWT 3
P Komponentenentwicklung mit TextField und Label AWT, Swing, JavaFX & SWT 10
K Problem mit TextField Strings AWT, Swing, JavaFX & SWT 2
S Textfield nummer merken AWT, Swing, JavaFX & SWT 3
M problem mit textfield-aktualisierung AWT, Swing, JavaFX & SWT 4
G Zugriff auf TextField geht nicht AWT, Swing, JavaFX & SWT 5
V Werte aus TextField in eine andere Klasse? AWT, Swing, JavaFX & SWT 2
M Textfield AWT, Swing, JavaFX & SWT 8
S "größeres Problem" mit JComboBox und Textfield AWT, Swing, JavaFX & SWT 35
P [TextField] cursor setzten AWT, Swing, JavaFX & SWT 2
S Eingabe einschränken bei TextField AWT, Swing, JavaFX & SWT 19
S AWT: Probleme mit TextField AWT, Swing, JavaFX & SWT 4
S TextField: Zeilenumbrüche AWT, Swing, JavaFX & SWT 3
E Zeilenumbruch in einem AWT TextField AWT, Swing, JavaFX & SWT 2
F requestFocus() auf ein TextField AWT, Swing, JavaFX & SWT 6
E ausgelesener String wird in Textfield nicht angezeigt AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben