Как мне вернуть панель? - PullRequest
0 голосов
/ 18 июня 2019

Я почти закончил с этой вот программой.Это одна из форм рабочих заданий с обработчиками событий и обновленным итогом.Как вернуть итоговое значение, обновленное после получения пользовательских данных?Я уверен, что мне нужно где-то возвратную панель, просто не знаю где.Код ниже:

public class Working_order extends Application {

    // Radio buttons
    private RadioButton rbNext = new RadioButton("$20");
    private RadioButton rbThis = new RadioButton("$12");
    private RadioButton rbSome = new RadioButton("$5");

    private Label lbDue = new Label("$0.00");

    @Override
    public void start(Stage primaryStage) {
        // Create a pane and set its properties
        GridPane pane = new GridPane();

        pane.setAlignment(Pos.CENTER);
        pane.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
        pane.setHgap(5.5);
        pane.setVgap(5.5);

        // Place nodes in the pane
        pane.add(new Label("Item"), 0, 0);
        pane.add(tfItem, 1, 0);
        pane.add(new Label("Price"), 0, 1);
        pane.add(tfPrice, 1, 1);
        pane.add(new Label("Quantity"), 0, 2);
        pane.add(tfQty, 1, 2);

        CheckBox chTaxable = new CheckBox("Taxable?");

        pane.add(chTaxable, 1, 3);
        // More nodes in a pane
        pane.add(new Label("Shipping"), 0, 4);
        pane.add(rbNext, 1, 5);
        pane.add(new Label("Next Day"), 0, 5);
        pane.add(rbThis, 1, 6);
        pane.add(new Label("This Week"), 0, 6);
        pane.add(rbSome, 1, 7);
        pane.add(new Label("Total Due"), 0, 8);
        pane.add(lbDue, 1, 8);
        pane.add(new Label("Some Day"), 0, 7);

        Button btAdd = new Button("Process");
        Button btAdd2 = new Button("Reset");

        // Toggle group
        ToggleGroup group = new ToggleGroup();
        rbNext.setToggleGroup(group);
        rbThis.setToggleGroup(group);
        rbSome.setToggleGroup(group);

        btAdd.setOnAction(e -> {
            // read textboxes

            String sPrice = tfPrice.getText();
            double price = Double.parseDouble(sPrice);
            int qty = Integer.parseInt(tfQty.getText());
            double subTotal = price * qty;
            double tax;
            if (chTaxable.isSelected()) {
                tax = subTotal * 0.07;
            } else {
                tax = 0;
            }

        });

        pane.add(btAdd, 0, 9);
        pane.add(btAdd2, 1, 9);
        GridPane.setHalignment(btAdd, HPos.RIGHT);
        GridPane.setHalignment(btAdd2, HPos.LEFT);

        // Create a scene and place it in the stage
        Scene scene = new Scene(pane);
        primaryStage.setTitle("ShowGridPane"); // Set the stage title
        primaryStage.setScene(scene); // Place the scene in the stage
        primaryStage.show(); // Display
    }

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

1 Ответ

1 голос
/ 18 июня 2019

Прежде всего, вы не создали текстовые поля (tfItem, tfPrice, tfQty).Чтобы решить эту проблему, добавьте эти строки

TextField tfItem = new TextField();
TextField tfPrice = new TextField();
TextField tfQty = new TextField();

Ваша проблема проста, после вычисления результата путем применения формулы в обработчике событий btAdd (кнопка процесса) просто добавьте эту строку в концеобработчик события

lbDue.setText( result + "" );

это решит вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...