2017-05-07 3 views
1

zugreifen Ich mache eine GUI-Anwendung mit javafx, die Eingabe vom Benutzer nimmt und dann diese Daten in anderen Klassen berechnet. Ich habe versucht, ein Objekt zu erstellen und darauf zuzugreifen, kann es aber nicht zum Laufen bringen. Ich habe gegoogelt und viele Dinge ausprobiert, wie die abstrakte Methode, aber ich kann es nicht zum Laufen bringen. bitte sagen, wie kann ich die Variablen zugreifen (wie ID, Party, VoterAge) von Controller-Klasse oder einer anderen KlasseIch bin nicht in der Lage, auf Variablen in GUI (Lambda-Ausdruck) aus anderen Klasse

  Submit.setOnAction((ActionEvent e) -> { 
       primaryStage.setScene(scene1); 
     String ID = VoterIdtext.getText(); 
     String Party=VoteTotext.getText(); 
     Integer VoterAge=Integer.parseInt(Agetext.getText()); 

}

Antwort

1

Wie aus Ihrem Beispiel zu sehen ist, die Variablen (ID, Party, VoterAge) sind in der Methode beschrieben und sie sind lokale Variablen. Wenn Sie sie in anderen Klassen verwenden möchten, müssen Sie sie in einem anderen Teil deklarieren. Zum Beispiel:

public static String ID = ""; 
public static String Party; 
public static int VoterAge = null; 
... 

    Submit.setOnAction((ActionEvent e) -> { 
     primaryStage.setScene(scene1); 
     ID = VoterIdtext.getText(); 
     Party=VoteTotext.getText(); 
     VoterAge=Integer.parseInt(Agetext.getText()); 
} 
1
import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.ButtonBar; 
import javafx.scene.control.Label; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class SampleApp extends Application { 

public class Info { 

    private String name; 
    private int age; 

    public String getName() { 
     return name; 
    } 

    public int getAge() { 
     return age; 
    } 

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

    public void setAge(String age) { 
     this.age = Integer.parseInt(age); 
    } 
} 

private TextField ageField; 
private TextField nameField; 
private Info info; 
private Button printButton; 
private Button submitButton; 

@Override public void start(Stage primaryStage) throws Exception { 
    VBox root = new VBox(); 
    primaryStage.setScene(new Scene(root)); 
    createNameField(root); 
    createAgeField(root); 
    submitButton = new Button("Submit"); 
    submitButton.setOnAction((e) -> setInfo()); 
    ButtonBar e = new ButtonBar(); 
    printButton = new Button("Print Info"); 
    printButton.setDisable(true); 
    printButton.setOnAction((eve) -> printInfo()); 
    e.getButtons().addAll(submitButton, printButton); 
    root.getChildren().add(e); 
    primaryStage.show(); 
} 

private void printInfo() { 
    System.out.println("Name: " + info.getName()); 
    System.out.println("Age: " + info.getAge()); 
} 

private void setInfo() { 
    info = new Info(); 
    info.setName(nameField.getText()); 
    info.setAge(ageField.getText()); 
    printButton.setDisable(false); 
} 

private void createAgeField(VBox root) { 
    HBox ageBox = new HBox(10); 
    root.getChildren().add(ageBox); 
    ageField = new TextField(); 
    ageBox.getChildren().addAll(new Label("Age: "), ageField); 
} 

private void createNameField(VBox root) { 
    HBox ageBox = new HBox(); 
    root.getChildren().add(ageBox); 
    nameField = new TextField(); 
    ageBox.getChildren().addAll(new Label("Name: "), nameField); 
} 

public static void main(String[] args) { 
    launch(args); 
} 

}

Verwandte Themen