Anfängerproblem mit Textfeld

perlfan

Mitglied
Hallo - ich möchte eigentlich nur den Inhalt eines Textfeldes auslesen und bekomme das schon nicht hin: direkt einen String einfügen funktioniert: label.setText("wat drin");

Nur das hier funktioniert nicht: label.setText(useruser.getText());

Also - ich möchte einfach das Textfeld useruser auslesen und den Inhalt ins Label kopieren. Warum ist das so schwer?

Unten noch der zugehörige Controller aus Netbeans:

Vielen Dank für Hilfe! Grüße, Frank
Java:
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
/**
*
* @author Frank C
*/
public class FXMLDocumentController implements Initializable {

  @FXML
  private Label label;
  private TextField useruser;

  @FXML
  private void login(ActionEvent event) {

  label.setText(useruser.getText());
  }

  @Override
  public void initialize(URL url, ResourceBundle rb) {

  // TODO
  }

}
 
Zuletzt bearbeitet von einem Moderator:
Hi,
Das kann verschiedene Ursachen haben:
- das userser- TextField ist leer
- private void login(ActionEvent event) {...} wird nicht aufgerufen...
- etc..
poste doch das fxml und den kompletten code, dann können wir mehr sehen...
 
Hallo knilch - danke für deine Antwort. Die login Methode wird eigentlich aufgerufen, da label.setText("wat drin"); funktioniert, wenn ich es da reinkopiere. Unten habe ich jetzt das fxml und den controller Code einkopiert - danke für jede Hilfe!!
XML:
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns="[URL]http://javafx.com/javafx/8.0.40[/URL]" xmlns:fx="[URL]http://javafx.com/fxml/1[/URL]" fx:controller="javafxapplication10.FXMLDocumentController">
  <children>
  <PasswordField fx:id="password" layoutX="21.0" layoutY="58.0" />
  <Button fx:id="login" layoutX="21.0" layoutY="100.0" mnemonicParsing="false" onAction="#login" text="Button" />
  <Label fx:id="label" layoutX="136.0" layoutY="105.0" />
  <TextField fx:id="useruser" layoutX="21.0" layoutY="14.0" />
  </children>
</AnchorPane>

Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javafxapplication10;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
/**
*
* @author Frank C
*/
public class FXMLDocumentController implements Initializable {
 
  @FXML
  private Label label;
  private TextField useruser;

  @FXML
  private void login(ActionEvent event) {
 
  label.setText(useruser.getText());
  }
 
  @Override
  public void initialize(URL url, ResourceBundle rb) {
 
  // TODO
  } 
 
}
 
Zuletzt bearbeitet von einem Moderator:
Hi,
Wie KrokoDiehl geschrieben hat, sind die Beziehungen von deinen Controlls (label, button etc.) im FXML-Controller nicht vorhanden...
Immer wenn du ein Controll (label, textField, button etc.) im Controller etwas machen möchtest (text ändern, Eventlistener registrieren etc. musst du die Beziehungen deklarieren (mit @FXML- Annotation). z.B.
Java:
@FXML
private Label label;
@FXML
private TextField useruser;
@FXML
private Button login;
@FXML
private PasswordField password;
 
Super - wohl ein echter Anfängerfehler, aber danke für die Hilfe! Hätte nicht gedacht, dass das vor jedem einzelnen Control erforderlich ist. Grüße, Frank
 
Gerne...
Hätte nicht gedacht, dass das vor jedem einzelnen Control erforderlich ist.
Woher soll der Controller wissen, welche Aktion auf welches Controll durchgeführt werden soll, wenn die Beziehungen zwischen fxml und Controller nicht klar sind? z.B. Label-text ändern, Button-Text ändern etc.
Das geht nur indem die Controlls welche im fxml vorhanden sind, im Controller aufgenommen werden...
 

Zurück
Oben