# JTextfield auslesen und daten übergeben



## moe_joe (17. Okt 2007)

Ich versuche erzweifelt mein JTextfield nach einem Button Klick auszulesen und den ausgelesenen String dann einer anderen Klasse zu übergeben.


```
public static void highscoreeintrag() {
		File hsfile = new File("highscore.dat");
		if (hsfile.exists()) {// prüfen, ob die Datei existiert
			try {
				JDialog highscored = new JDialog();
				JTextArea highscoreta = new JTextArea();
				JTextField name_eingabe = new JTextField();
				JButton name_hinzufuegen = new JButton("Hinzufuegen");
				highscored.add(name_hinzufuegen);
				highscored.add(name_eingabe);
				name_eingabe.setBounds(120, 350, 90, 20);
				name_hinzufuegen.setBounds(120, 375, 90, 20);
				eingegebener_name = name_eingabe.getText();
				System.out.println(eingegebener_name);
				highscoreta.setEditable(false);
				highscoreta.setLineWrap(true);
				highscoreta.setBackground(Color.black);
				highscored.setBackground(Color.black);
				highscoreta.setWrapStyleWord(true);
				highscoreta.setForeground(Color.white);
				highscored.add(highscoreta);
				highscored.setTitle(".:Hangman:. - Highscore");
				highscored.setSize(300, 450);
				highscored.setResizable(false);
				highscored.setLocation(450, 0);
				FileReader hsfileR = new FileReader(hsfile);
				// FileReader liest ein array of char und keinen String
				char[] c = new char[(int) hsfile.length()];
				hsfileR.read(c); // und in das erstellte char-array einlesen
				String s = new String(c);// aus dem char-array einen string
				// erzeugen
				highscoreta.setText(s);
				highscored.setVisible(true);
				highscoreta.setVisible(true);
				hsfileR.close(); // den FileReader wieder schließen
			} catch (FileNotFoundException e) { // falls Fehler beim
				e.printStackTrace(); // Einlesen auftreten,
			} catch (IOException e) { // diese ausgeben
				e.printStackTrace();
			}
		} else {
		}
	};
```

der String soll dann der KLasse SortArray übergeben und der variable "name" zugewiesen werden

```
public class SortArray {   	//In Objekten dieser inneren Klasse werden die einzelnen
			//Highscore-einträge (Paare aus Spieler und Punkten) abgelegt
   		private class HighscoreEintrag implements Comparable<Object> {  
   			
   			String name; 	//Speichert den Namen
   			double punkte;	//Speichert die Punkte


   			public String getName() 
   				name=eingegebener_name;
   				return name;
   			}
```

kann mir vielleicht jemand eionen Tipp geben wo mein Fehler liegt?

mfg


----------



## SlaterB (17. Okt 2007)

wo passiert denn irgendwas?
40 Zeilen Code scheinen vom Einlesen einer Datei und unseglichen GUI-Formatierungen zu handeln,
ist das hier irgendwie relevant?

wo geht es um das fragliche JTextField?


----------



## moe_joe (17. Okt 2007)

also, in der methode highscoreeintrag wird ein TextField (name_eingabe) und ein Button (name_hinzufuegen) vereinbart. Im Textfield soll der name eingegeben werden und beim klick auf den Button name_hinzufuegen soll der Inhalt des Textfields an die Variable "name" in der KLasse SortArray übergeben werden.

sorry das ich soviel code geposted habe, ich dachte man versteht es im kontext besser als wenn ich nur die textfield und button variablen gepostet hätte.

mfg moejoe


----------



## SlaterB (17. Okt 2007)

auch mit dieser unvollständige Beschreibung (  ) willst du also sagen, dass bisher noch kein Code vorhanden ist?

nun, dann kann man erstmal nicht viel mehr sagen als:
im ActionListener:
String text = textField.getText();
anderesObjekt.hierHastDuText(text);

wie du z.B. im ActionListener an die beiden benötigten Variablen (textField, anderesObjekt) kommst,
kann man ganz pauschal ja nicht erklären, das hängt von deinem Programm ab


----------



## moe_joe (17. Okt 2007)

so, hab grad noch nen fehler gefunden, damit hat sich meine frage fast selber erklärt, jetzt ist noch das einzige Problem da sich nicht genau weis wie ich in der methode highscoreeintrag der klasse hangman, die klasse SortArray aufrufen kann


```
public static void highscoreeintrag() {
                 public void actionPerformed( ActionEvent e )  
				  {
				    	eingegebener_name = name_eingabe.getText();
				    	System.out.println(eingegebener_name);
					    SortArray();
				  }
```


----------



## SlaterB (17. Okt 2007)

eine Klasse kann man nicht aufrufen,
du kannst höchstenst ein Objekt erstellen:

SortArray a = new SortArray();
a.irgendwas();

aber was bringt es, an dieser Stelle ein neues Objekt zu erstellen und dieses dann sofort wieder zu löschen?
bevor man programmiert braucht man erst mal ein Konept, was soll passieren?

ist z.B. ein Objekt gemeint, welches schon länger irgendwo gespeichert ist usw.


----------



## moe_joe (17. Okt 2007)

SortArray soll aufgerufen werden, weil dort dann der neue Highscoreeintrag mit dem eingegebenen namen erstellt werden soll.


> bevor man programmiert braucht man erst mal ein Konept, was soll passieren?



ja ich hab doch eine genaue vorstellung was passieren soll, du vertsehst sie bloß nicht. Es ist doch alles ganz logisch. Der Benutzer spielt das Spiel, wenn er ein wort nicht errät, führt dies zum spielende. Am Spielende erscheint dann ein Dialog fenster mit der aktuellen highscoreliste. im unteren bereich befinden sich ein textfeld und ein button. hier soll der benutzer jetzt seinen namen eingeben und auf den button hinzufügen klicken. Wenn der Bentuzer auf den button hinzufügen geklickt hat soll der name mit der gespielten rundenanzahl als neuer eintrag in der Highscoreliste erscheinen. eigentlich recht einfach!


----------



## zEriX (18. Okt 2007)

@moe_joe
mal zu dem Satz "ja ich hab doch eine genaue vorstellung was passieren soll, du vertsehst sie bloß nicht." Jemand anders kann deine Gedankengänge nicht verstehen, wenn du sie nicht richtig erklärst. 

MFG

zEriX


----------

