Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /****************************************************FxCalc**********************
- package application;
- import javafx.application.Application;
- import javafx.beans.binding.Bindings;
- import javafx.beans.property.*;
- import javafx.event.ActionEvent;
- import javafx.fxml.*;
- import javafx.stage.Stage;
- import javafx.scene.*;
- import javafx.scene.control.*;
- public class FxCalc extends Application {
- @FXML
- private TextField display;
- @FXML
- private BooleanProperty disabledButtons = new SimpleBooleanProperty(false);
- private DoubleProperty fontSize = new SimpleDoubleProperty(10);
- private double accumulator;
- private double equalityDefaultNumber;
- private double percent;
- private double numberToCountPercent;
- private String operator;
- private boolean wasNumber;
- private boolean wasEquality;
- private boolean wasPercent;
- public FxCalc() {
- accumulator = 0.0;
- equalityDefaultNumber = 0.0;
- percent = 0.0;
- numberToCountPercent = 0.0;
- operator = "";
- wasNumber = false;
- wasEquality = false;
- wasPercent = false;
- }
- @FXML
- public void initialize() {
- display.setText("0");
- }
- public final boolean getDisabledButtons() {
- return disabledButtons.get();
- }
- public final void setDisabledButtons(boolean value) {
- disabledButtons.set(value);
- }
- public BooleanProperty disabledButtonsProperty() {
- return disabledButtons;
- }
- @Override
- public void start(Stage primaryStage) {
- try {
- Parent root = FXMLLoader.load(getClass()
- .getResource("fxcalc.fxml"));
- Scene scene = new Scene(root,400,400);
- scene.getStylesheets().add(getClass()
- .getResource("fxscene.css").toExternalForm());
- primaryStage.setScene(scene);
- primaryStage.setTitle("Scene Buildered");
- primaryStage.setMaxHeight(600);
- primaryStage.setMaxWidth(600);
- primaryStage.setMinHeight(200);
- primaryStage.setMinWidth(200);
- fontSize.bind(scene.heightProperty().add(scene.widthProperty()).divide(50));
- for(Node node: root.getChildrenUnmodifiable())
- if(node instanceof Button) {
- Button button = (Button) node;
- button.styleProperty().bind(Bindings.concat("-fx-font-size: ", fontSize.asString(), ";"));
- }
- primaryStage.show();
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- @FXML
- public void Click(ActionEvent event) {
- String buttonValue = ((Button)event.getSource()).getText();
- String number;
- switch(buttonValue) {
- case "+/-":
- number = display.getText();
- if(number.substring(0, 1).equals("-"))
- display.setText(number.substring(1));
- else
- display.setText("-" + number);
- break;
- case "+":
- case "-":
- case "/":
- case "*":
- if(wasNumber) {
- equalityDefaultNumber = Double.parseDouble(display.getText());
- accumulator = calculate(accumulator, operator, equalityDefaultNumber);
- display.setText(String.valueOf(accumulator));
- } else
- accumulator = Double.parseDouble(display.getText());
- operator = buttonValue;
- wasNumber = false;
- wasPercent = false;
- wasEquality = false;
- break;
- case "C":
- display.setText("0.0");
- accumulator = 0.0;
- equalityDefaultNumber = 0.0;
- percent = 0.0;
- numberToCountPercent = 0.0;
- operator = "";
- wasNumber = false;
- wasEquality = false;
- wasPercent = false;
- setDisabledButtons(false);
- break;
- case "sqrt":
- number = display.getText();
- if(number.substring(0, 1).equals("-")) {
- display.setText("ERR");
- setDisabledButtons(true);
- }
- else
- display.setText(String.valueOf(Math.sqrt(Double.parseDouble(number))));
- wasNumber = false;
- wasPercent = false;
- break;
- case "%":
- if(wasPercent)
- percent = percent / 2;
- else {
- percent = Double.parseDouble(display.getText());
- numberToCountPercent = accumulator;
- }
- accumulator = calculate(numberToCountPercent, "*", percent / 100);
- display.setText(String.valueOf(accumulator));
- wasPercent = true;
- wasNumber = false;
- break;
- case "=":
- if(wasNumber)
- equalityDefaultNumber = Double.parseDouble(display.getText());
- accumulator = calculate(accumulator, operator, equalityDefaultNumber);
- if(accumulator == -1)
- break;
- display.setText(String.valueOf(accumulator));
- wasNumber = false;
- wasEquality = true;
- wasPercent = false;
- break;
- case ".":
- if(display.getText().equals("0.0") || wasEquality || wasPercent) {
- display.clear();
- display.appendText("0");
- }
- if(display.getText().contains("."))
- break;
- display.appendText(buttonValue);
- wasNumber = true;
- wasPercent = false;
- wasEquality = false;
- break;
- // number
- default:
- if(wasEquality) {
- wasEquality = false;
- operator = "";
- }
- if(!wasNumber) {
- wasNumber = true;
- display.clear();
- }
- display.appendText(buttonValue);
- }
- }
- private double calculate(double number1, String operator, double number2) {
- switch(operator) {
- case "+":
- return number1 + number2;
- case "-":
- return number1 - number2;
- case "*":
- return number1 * number2;
- case "/":
- if (number2 != 0)
- return number1 / number2;
- else {
- display.setText("ERR");
- setDisabledButtons(true);
- return -1;
- }
- default:
- return number2;
- }
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
- *******************************fxscene.css********************************/
- .root {
- -fx-font-size: 26px;
- -fx-background-color: #C0C0C0;
- }
- .button {
- -fx-background-radius: 5%;
- -fx-font-size: 20px;
- -fx-max-width: 2000px;
- -fx-max-height: 2000px;
- -fx-text-fill: #000033;
- -fx-background-color:
- linear-gradient(from 0% 90% to 0% 100%, #A0A0A0 0%, #808080 100%),
- #A0A0A0,
- #E0E0E0,
- radial-gradient(center 50% 50%, radius 100%, #E0E0E0, #C0C0C0);
- }
- .button:hover {
- -fx-effect: innershadow(gaussian, #404040, 50, 0, 5, 5);
- }
- /************************************fxcalc.fxml*****************************************************/
- <?xml version="1.0" encoding="UTF-8"?>
- <?import javafx.scene.control.*?>
- <?import java.lang.*?>
- <?import javafx.scene.layout.*?>
- <?import javafx.scene.layout.GridPane?>
- <GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.FxCalc">
- <columnConstraints>
- <ColumnConstraints hgrow="ALWAYS" />
- <ColumnConstraints hgrow="ALWAYS" />
- <ColumnConstraints hgrow="ALWAYS" />
- <ColumnConstraints hgrow="ALWAYS" />
- <ColumnConstraints hgrow="ALWAYS" />
- </columnConstraints>
- <rowConstraints>
- <RowConstraints vgrow="ALWAYS" />
- <RowConstraints vgrow="ALWAYS" />
- <RowConstraints vgrow="ALWAYS" />
- <RowConstraints vgrow="ALWAYS" />
- <RowConstraints vgrow="ALWAYS" />
- </rowConstraints>
- <children>
- <Button mnemonicParsing="false" onAction="#Click" text="C" GridPane.columnIndex="4" />
- <Button mnemonicParsing="false" onAction="#Click" text="sqrt" GridPane.columnIndex="4" GridPane.rowIndex="1" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="/" GridPane.columnIndex="3" GridPane.rowIndex="1" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="\%" GridPane.columnIndex="4" GridPane.rowIndex="2" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="*" GridPane.columnIndex="3" GridPane.rowIndex="2" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="=" GridPane.columnIndex="4" GridPane.rowIndex="3" GridPane.rowSpan="2" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="-" GridPane.columnIndex="3" GridPane.rowIndex="3" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="9" GridPane.columnIndex="2" GridPane.rowIndex="1" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="6" GridPane.columnIndex="2" GridPane.rowIndex="2" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="3" GridPane.columnIndex="2" GridPane.rowIndex="3" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="8" GridPane.columnIndex="1" GridPane.rowIndex="1" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="5" GridPane.columnIndex="1" GridPane.rowIndex="2" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="2" GridPane.columnIndex="1" GridPane.rowIndex="3" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="+" GridPane.columnIndex="3" GridPane.rowIndex="4" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="+/-" GridPane.columnIndex="2" GridPane.rowIndex="4" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="." GridPane.columnIndex="1" GridPane.rowIndex="4" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="7" GridPane.rowIndex="1" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="4" GridPane.rowIndex="2" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="1" GridPane.rowIndex="3" disable="${controller.disabledButtons}" />
- <Button mnemonicParsing="false" onAction="#Click" text="0" GridPane.rowIndex="4" disable="${controller.disabledButtons}" />
- <TextField fx:id="display" GridPane.columnSpan="4" />
- </children>
- </GridPane>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement