# Eingabe von TextField in variable speichern



## UchihaSevenfold (7. Jun 2016)

Hey liebes Forum, 

ich habe da im moment ein kleines problem und zwar bin ich jetzt neu mit javaFX gestartet. 

Ich habe eine neue fxml applikation erstellt und mit dem scenebuilder eine kleine GUI gebaut. Diese GUI beinhaltet ein texfield. 

Im fxDocumentController habe ich dann auch das textfeld mit @FXML initialisiert. 


So nun habe ich in einer ANDEREN klasse eine int variable namens Temperatur, welche dann für eine Berechnung genutzt wird. Wie bekomme ich denn dann nun die Eingabe aus dem Textfield klassenuebergreifend in diese Variable gespeichert ?

ich habe halt versucht ein objekt des fxDocumentControllers in der anderen klasse zu erstellen um somit zu sagen




```
temperatur = Integer.parseInt(fx.textFeld.getText());
```




das funktioniert auf jeden fall nicht. anscheind kann ich kein objekt erstllen von dem Controller oder so ich weiß nicht. was mich verwirrt ist ich habe das textfeld ja auch nicht wie sonst in java ganz normal erstellt sondern in dem scenebuilder gebaut und mit einer fx:id versehen . und das funktioniert ja jetzt irgendwie anders,ich bin wirklich verwirrt wie das gehen sollte jetzt ich hoffe mir kann jemand helfen dieses problem mit mir zu lösen. 

was mir grad noch einfällt das man vielleicht mit getter und setter irgendwie arbeitet ? Das kann ich aber auch nicht so gut also Hilfe wäre wirklich schön 
	

	
	
		
		

		
			





vielen dank im vorraus 
shisui


----------



## Viktim (7. Jun 2016)

Am besten übergibst du mit "this" ein Objekt deiner Klasse mit dem Textfeld drin an die Klasse in der du die Temperatur brauchst. Dieses Objekt speicherst du in eine Variable.

Dann kannst du in der Klasse die das Textfeld beinhaltet einen Getter für das Textfeld oder die Temperatur machen je nachdem, was du besser findest. 
Den Getter kannst du dann in der anderen Klasse mit objektvariablenname.getTemperatur(); aufrufen 

Ein kleines dreckig programmiertes Beispiel:

Klasse1:

```
public class KlasseMitJTextField extends JFrame {

  /**
   *
   */
  private static final long serialVersionUID = 1L;
  JTextField textfeld;
  JButton button;

  public KlasseMitJTextField() {
    super("Test Fenster");
    JPanel panel = new JPanel();
    textfeld = new JTextField();
    textfeld.setPreferredSize(new Dimension(190, 30));
    panel.add(textfeld);

    button = new JButton("Schreibe");
    button.setPreferredSize(new Dimension(190, 30));
    KlasseDieTemperaturHabenSoll klasse2 = new KlasseDieTemperaturHabenSoll(this);

    button.addActionListener(e -> {
      klasse2.gebeTemperaturAus();
    });
    panel.add(button);

    add(panel);
    setSize(400, 70);
    setVisible(true);
  }

  public int getTemperatur() {
    return Integer.parseInt(textfeld.getText());
  }

}
```

Klasse2:

```
public class KlasseDieTemperaturHabenSoll {

  private KlasseMitJTextField klasseMitJTextField;

  public KlasseDieTemperaturHabenSoll(KlasseMitJTextField klasseMitJTextField) {
    this.klasseMitJTextField = klasseMitJTextField;
  }

  public void gebeTemperaturAus() {
    System.out.println(klasseMitJTextField.getTemperatur());
  }

}
```

In der Main steht einfach nur:

```
KlasseMitJTextField klasse = new KlasseMitJTextField();
```


EDIT: Oh mist, du musst die Komponenten noch von Swing zu JavaFX ändern :/ hab da was überlesen 
Aber vom prinzip geht das so


----------



## UchihaSevenfold (7. Jun 2016)

Genau da liegt ja mein Problem ich hab das textfeld mit dem scenebuilder gebaut und damit man auf sachen ausm scenebuilder zugriff hat muss man ja in fxdocumentController.java erstmal schreiben 

@FXML
textfeld bla = new Textfeld;

und auch in anderen klassen muesste doch so ein @FXML dabei sonst kennt der das textfeld ausm scenebuilder doch nicht oder versteh ich da was falsch ?

und das verwirrt mich das muss doch dann anders gemachtt werden ooder nicht :-/?

liebe grüße
shisui


----------

