/************************************************** * Author: Morrison * Date: 01 Mar 2022 **************************************************/ import javafx.application.Application; import javafx.application.Platform; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; import javafx.scene.layout.BorderPane; public class RPNCalc extends Application { private TextField display; private NumberButton[] numButtons; public RPNCalc() { display = new TextField(); display.setStyle("-fx-font-size:16pt;-fx-font-family:'Comic Sans MS';-fx-text-weight:bold;"); numButtons = new NumberButton[12]; for(int k = 0; k < 10; k++) { numButtons[k] = new NumberButton("" + k); } numButtons[10] = new NumberButton("E"); numButtons[11] = new NumberButton("."); } @Override public void init() { } @Override public void start(Stage primary) { BorderPane bp = new BorderPane(); bp.setTop(display); GridPane numPad = new GridPane(); numPad.setVgap(15); numPad.setHgap(10); bp.setCenter(numPad); numPad.add(numButtons[7], 0, 0); numPad.add(numButtons[8], 1, 0); numPad.add(numButtons[9], 2, 0); numPad.add(numButtons[4], 0, 1); numPad.add(numButtons[5], 1, 1); numPad.add(numButtons[6], 2, 1); numPad.add(numButtons[1], 0, 2); numPad.add(numButtons[2], 1, 2); numPad.add(numButtons[3], 2, 2); numPad.add(numButtons[10], 0, 3); numPad.add(numButtons[0], 1, 3); numPad.add(numButtons[11], 2, 3); primary.setScene(new Scene(bp, 800, 500)); primary.show(); } @Override public void stop() { } /************************Inner Classes***********/ class NumberButton extends Button { private final String ch; public NumberButton(String ch) { super(ch); this.ch = ch; setOnAction( e -> { //when the button is pushed, //the button's character is appended to the //textfield. display.setText(display.getText() + ch); }); setStyle("-fx-font-size:16pt;-fx-font-family:'Comic Sans MS';-fx-text-weight:bold;"); setPrefSize(75,50); } } class OpButton extends Button { private String symbol; private DoubleBinaryOperator op; public OpButton(String symbol, DoubleBinaryOperator op) { super(symbol); this.op = op; setOnAction( e -> { }); } } }