我在注册事件处理程序时遇到问题
Im having trouble registering an Event Handler
我在注册事件处理程序时遇到问题,该事件处理程序应该计算用户输入的餐费总额、他们想要的小费 % 和销售税。我不断收到一条错误消息,内容为 "missing method body, or declare abstract"。似乎没有语法错误,所以我不太确定问题出在哪里。
老实说,我卡在了这一点上,不知道问题出在哪里。
public class TipTaxTotal extends Application
{
//Fields
private TextField mealCostTextField;
private TextField tipPercentageTextField;
private TextField salesTaxTextField;
private Label totalLabel;
public static void main (String[] args)
{
launch(args);
}
@Override
public void start (Stage primaryStage)
{
//Meal cost, Tip percentage, and Sales tax labels & TextFields
Label mealCostLabel = new Label ("Enter the cost of your meal");
mealCostTextField = new TextField ();
Label tipPercentageLabel = new Label ("Enter the desired tip percentage");
tipPercentageTextField = new TextField ();
Label salesTaxLabel = new Label ("Enter the sales tax percentage");
salesTaxTextField = new TextField ();
//This button will perform the calculation
Button calcButton = new Button("Calculate");
//Register the event handler
calcButton.setOnAction(new CalcButtonHandler());
//This label will display the total
totalLabel = new Label ();
//Put all the Labels and Text Fields in the Hbox spaced by 10 px
HBox hbox = new HBox(10, mealCostLabel, mealCostTextField,
tipPercentageLabel, tipPercentageTextField, salesTaxLabel,
salesTaxTextField);
//Put Hbox, CalcButton, and total Label in the Vbox
VBox vbox = new VBox(10, hbox, calcButton, totalLabel);
//align vbox to the center of the stage
vbox.setAlignment(Pos.CENTER);
//set vbox padding to 10 px
vbox.setPadding(new Insets(10));
//create a scene
Scene scene = new Scene(vbox);
//add the scene to the stage
primaryStage.setScene(scene);
//give the stage a title
primaryStage.setTitle("Tip% and Sales Tax Calculator");
primaryStage.show();
}
//This is where my trouble is
//event handler
class CalcButtonHandler implements EventHandler<ActionEvent>
{
@Override
public void handle(ActionEvent event);
{
//get the meal cost, tip percentage, and sales tax
double MealCost =
Double.parseDouble(mealCostTextField.getText());
double TipPercentage =
Double.parseDouble(tipPercentageTextField.getText());
double SalesTax =
Double.parseDouble(salesTaxTextField.getText());
//calculate
double totalTaxes = SalesTax + TipPercentage;
double total = MealCost * totalTaxes;
//display total
totalLabel.setText(String.format("Total: $%,.2f ", total));
}
}
}
calcButton 应该得到用户用餐的总费用、用户想要的小费和用户的销售税。
实现接口时根本不需要@Override,因为接口不等同于抽象类。您不能覆盖接口方法,因为它未定义且未标记为抽象。
我在注册事件处理程序时遇到问题,该事件处理程序应该计算用户输入的餐费总额、他们想要的小费 % 和销售税。我不断收到一条错误消息,内容为 "missing method body, or declare abstract"。似乎没有语法错误,所以我不太确定问题出在哪里。
老实说,我卡在了这一点上,不知道问题出在哪里。
public class TipTaxTotal extends Application
{
//Fields
private TextField mealCostTextField;
private TextField tipPercentageTextField;
private TextField salesTaxTextField;
private Label totalLabel;
public static void main (String[] args)
{
launch(args);
}
@Override
public void start (Stage primaryStage)
{
//Meal cost, Tip percentage, and Sales tax labels & TextFields
Label mealCostLabel = new Label ("Enter the cost of your meal");
mealCostTextField = new TextField ();
Label tipPercentageLabel = new Label ("Enter the desired tip percentage");
tipPercentageTextField = new TextField ();
Label salesTaxLabel = new Label ("Enter the sales tax percentage");
salesTaxTextField = new TextField ();
//This button will perform the calculation
Button calcButton = new Button("Calculate");
//Register the event handler
calcButton.setOnAction(new CalcButtonHandler());
//This label will display the total
totalLabel = new Label ();
//Put all the Labels and Text Fields in the Hbox spaced by 10 px
HBox hbox = new HBox(10, mealCostLabel, mealCostTextField,
tipPercentageLabel, tipPercentageTextField, salesTaxLabel,
salesTaxTextField);
//Put Hbox, CalcButton, and total Label in the Vbox
VBox vbox = new VBox(10, hbox, calcButton, totalLabel);
//align vbox to the center of the stage
vbox.setAlignment(Pos.CENTER);
//set vbox padding to 10 px
vbox.setPadding(new Insets(10));
//create a scene
Scene scene = new Scene(vbox);
//add the scene to the stage
primaryStage.setScene(scene);
//give the stage a title
primaryStage.setTitle("Tip% and Sales Tax Calculator");
primaryStage.show();
}
//This is where my trouble is
//event handler
class CalcButtonHandler implements EventHandler<ActionEvent>
{
@Override
public void handle(ActionEvent event);
{
//get the meal cost, tip percentage, and sales tax
double MealCost =
Double.parseDouble(mealCostTextField.getText());
double TipPercentage =
Double.parseDouble(tipPercentageTextField.getText());
double SalesTax =
Double.parseDouble(salesTaxTextField.getText());
//calculate
double totalTaxes = SalesTax + TipPercentage;
double total = MealCost * totalTaxes;
//display total
totalLabel.setText(String.format("Total: $%,.2f ", total));
}
}
}
calcButton 应该得到用户用餐的总费用、用户想要的小费和用户的销售税。
实现接口时根本不需要@Override,因为接口不等同于抽象类。您不能覆盖接口方法,因为它未定义且未标记为抽象。