2016-03-27 15 views
0

Ich erstelle einen einfachen Taschenrechner, der zwei in Textfelder eingegebene Werte hinzufügt und dann die Summe in einem dritten Textfeld anzeigt, wenn Sie eine Taste drücken. Wenn ich jedoch auf den Knopf drücke, passiert nichts und ich kann nicht herausfinden, was falsch ist. Ich bekomme keine Fehlermeldungen und das Programm kompiliert den Button scheint einfach nichts zu tun.JavaFX-Tasten-Listener funktioniert nicht

import javafx.application.*; 
import javafx.geometry.*; 
import javafx.scene.*; 
import javafx.stage.*; 
import javafx.scene.layout.*; 
import javafx.scene.control.*; 
import javafx.event.*; 


public class Calculator extends Application{ 

private TextField sumField; 
private TextField firstVField; 
private TextField secondVField; 

public void start(Stage myStage){ 
    myStage.setTitle("Simple Calculator"); 

    GridPane rootNode = new GridPane(); 
    rootNode.setPadding(new Insets(30)); 
    rootNode.setHgap(5); 
    rootNode.setVgap(5); 

    Scene myScene = new Scene(rootNode, 350,250); 

    Label firstVLabel = new Label("First Value:"); 
    Label secondVLabel = new Label("Second Value:"); 
    Label sumLabel = new Label("Sum:"); 


    TextField firstVField = new TextField(); 
    TextField secondVField = new TextField(); 
    TextField sumField = new TextField(); 


    sumField.setEditable(false); 

    Button calculate = new Button("Calculate"); 

    rootNode.add(firstVLabel, 0, 0); 
    rootNode.add(firstVField, 1, 0); 
    rootNode.add(secondVLabel, 0, 1); 
    rootNode.add(secondVField, 1, 1); 
    rootNode.add(sumLabel, 0, 2); 
    rootNode.add(sumField, 1, 2); 
    rootNode.add(calculate, 1, 3); 

    myStage.setScene(myScene); 
    myStage.setResizable(false); 
    myStage.show(); 

} 

class ButtonHandler implements EventHandler<ActionEvent>{ 

    public void handle(ActionEvent e) { 
     int sum = (int)firstVField.getText() + (int)secondVField.getText(); 
     sumField.setText(Integer.toString(sum)); 

    } 
} 

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

} 

Antwort

1

Sie haben Ihre ButtonHandler zur calculate Taste

calculate.setOnAction(new ButtonHandler()); 
+0

Nach dem Hinzufügen der Linie zu verbinden ich immer noch diese Fehlermeldung http://imgur.com/VJj43Ju – grademacher

+0

ein ganz anderes Problem Das ist. Siehe [dieser Beitrag] (http://stackoverflow.com/questions/860187/access-restriction-on-class-due-to-restriction-on-required-library-rt-jar) – Reimeus

+0

änderte die Cast-Argumente zu einem ParseInt Argument und ich bekomme jetzt eine Nullzeigerausnahme. Irgendwelche Gedanken? – grademacher

Verwandte Themen