- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 JavaFX 创建一个“PizzaOrder”应用程序。我已经启动并运行了窗口,按钮、单选按钮、下拉菜单和复选框都可以使用,但不知道如何得出含税的最终价格。
我是一名正在尝试编码的大学一年级学生。我尝试了多种方法,但到目前为止没有任何效果,因此下面的代码是空的/未完成。
package application;
import java.util.ArrayList;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx.stage.Stage;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
public class PizzaOrderApp extends Application {
private TextArea output;
private Button order;
private ChoiceBox<String> choiceBox;
private ToggleGroup group;
private TextField name;
ArrayList<CheckBox> listCheckBoxes = new ArrayList<CheckBox>();
public void start(Stage primaryStage) {
Text text = new Text();
text.setFont(Font.font("nfl minnesota vikings", FontWeight.EXTRA_BOLD, FontPosture.REGULAR, 100));
text.setFill(Color.DARKVIOLET);
text.setStrokeWidth(4);
text.setStroke(Color.GOLD);
text.setText("SKOL PIZZA!");
FlowPane paneTop = new FlowPane(text);
paneTop.setAlignment(Pos.CENTER);
paneTop.setHgap(20);
paneTop.setStyle("-fx-background-color: purple;");
String crustType[] = {"Thick", "Thin", "Gluten Free" };
choiceBox = new ChoiceBox<String>();
choiceBox.getItems().addAll(crustType);
choiceBox.getSelectionModel().selectFirst();
VBox verticalBoxLeft = new VBox();
verticalBoxLeft.getChildren().add(choiceBox);
group = new ToggleGroup();
RadioButton rb1 = new RadioButton("10\" Pizza");
rb1.setToggleGroup(group);
rb1.setSelected(true);
RadioButton rb2 = new RadioButton("12\" Pizza");
rb2.setToggleGroup(group);
RadioButton rb3 = new RadioButton("14\" Pizza");
rb3.setToggleGroup(group);
RadioButton rb4 = new RadioButton("16\" Pizza");
rb4.setToggleGroup(group);
verticalBoxLeft.getChildren().add(rb1);
verticalBoxLeft.getChildren().add(rb2);
verticalBoxLeft.getChildren().add(rb3);
verticalBoxLeft.getChildren().add(rb4);
verticalBoxLeft.setSpacing(10);
Pane paneLeft = new Pane(verticalBoxLeft);
paneLeft.setStyle("-fx-background-color: gold;");
paneLeft.setPrefSize(200, 600);
output = new TextArea();
output.setPrefColumnCount(30);
output.setPrefRowCount(40);
output.setEditable(false);
output.setText("Order");
Pane paneRight = new Pane(output);
paneRight.setStyle("-fx-background-color: gold;");
paneRight.setPrefSize(200, 600);
Font font = new Font(18);
Label nameLabel = new Label("Name: ");
nameLabel.setFont(font);
name = new TextField();
//name.setFont(font);
name.setPrefWidth(50);
name.setAlignment(Pos.CENTER);
FlowPane paneCenter = new FlowPane(nameLabel, name);
paneCenter.setHgap(20);
paneCenter.setAlignment(Pos.CENTER);
CheckBox topping1 = new CheckBox("Pepperoni");
CheckBox topping2 = new CheckBox("Sausage");
CheckBox topping3 = new CheckBox("Chicken");
CheckBox topping4 = new CheckBox("Bacon");
CheckBox topping5 = new CheckBox("Pineapple");
listCheckBoxes.add(topping1);
listCheckBoxes.add(topping2);
listCheckBoxes.add(topping3);
listCheckBoxes.add(topping4);
listCheckBoxes.add(topping5);
paneCenter.getChildren().add(topping1);
paneCenter.getChildren().add(topping2);
paneCenter.getChildren().add(topping3);
paneCenter.getChildren().add(topping4);
paneCenter.getChildren().add(topping5);
paneCenter.setVgap(10);
paneCenter.setStyle("-fx-background-color: gold;");
order = new Button("Order");
Button cancel = new Button("Cancel");
order.setOnAction(this::processButtonPress);
cancel.setOnAction(this::processButtonPress);
FlowPane paneBottom = new FlowPane(order, cancel);
paneBottom.setStyle("-fx-background-color: purple;");
paneBottom.setPrefSize(400,100);
paneBottom.setAlignment(Pos.CENTER);
paneBottom.setHgap(50);
BorderPane borderPane = new BorderPane();
borderPane.setTop(paneTop);
borderPane.setLeft(paneLeft);
borderPane.setCenter(paneCenter);
borderPane.setRight(paneRight);
borderPane.setBottom(paneBottom);
Scene scene = new Scene(borderPane,600,400);
primaryStage.setScene(scene);
primaryStage.show();
}
public void processButtonPress(ActionEvent event)
{
if(event.getSource() == order) {
output.appendText("\nOrder Button Pushed");
String outputText = "";
RadioButton selected = (RadioButton) group.getSelectedToggle();
outputText += "\nSize: "+selected.getText();
outputText += "\nCrust: "+choiceBox.getValue();
outputText += "\nName: "+name.getText();
for(CheckBox element : listCheckBoxes)
if(element.isSelected())
outputText += "\nTopping: "+element.getText();
output.setText(outputText);
}
else {
output.appendText("\nCancel Button Pushed");
}
}
public class PizzaOrder {
private int size;
private String crustType;
private String name;
//private double topping;
ArrayList<String> toppings = new ArrayList<String>();
public PizzaOrder(int size, String crustType, String name)
{
this.size = size;
this.crustType = crustType;
this.name = name;
}
public void addTopping(String topping)
{
}
private double calculatePrice()
{
double price = 0;
double totalPrice=0;
double tax = .055;
totalPrice = price + (price*tax);
return totalPrice;
}
public String toString()
{
String str = toString()+ "Size: "+size+"\nCrust: "+crustType+"\nToppings: "+toppings+"\nName: "+name+"\nTax: "+(price*tax)+"\nFinal Price: "+totalPrice;
return str;
}
}
public static void main(String[] args) {
launch(args);
}
}
选择用户想要的内容后,我需要显示最终输出:
最佳答案
can't figure out how to bring up the final price with tax included.
您根本没有按照指示使用PizzaOrder
。当您处理 order.setOnAction 时,您应该创建此类的实例,并使用 addTopping(String) 将所有配料添加到其中。
您还应该实现 calculatePrice()
方法,以便它使用类的字段来计算价格。最简单的方法是切换
尺寸
并据此设置价格
,然后根据toppins添加配料的价格.size()
.
然后在输出
文本区域中使用该实例的toString()
。不要从控件中读取值。
注释:
代替
ArrayList<CheckBox> list = new ArrayList<CheckBox>();
做
List<CheckBox> listCheckBoxes = new ArrayList<>();
在这种情况下,最好对接口(interface)进行编码,并且您不需要右侧的泛型类型,因为编译器会推断出这一点。
对每个按钮操作使用单独的方法。不要使用相同的方法,检查来源并据此采取行动。
关于java - 如何将总价添加到最终输出中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55774638/
import java.util.Scanner; import java.util.Date; import java.text.DateFormat; import java.text.Simpl
您将看到示例代码。 以下是我的问题:-我必须选择有值(value)的服务,但是当我取消服务时,总价格增加而不是减少。-我测试后取消了所有服务,但是总价还是有。我怎样才能让它回到零? 谢谢! :) 这是
我是一名优秀的程序员,十分优秀!