Last active
April 8, 2021 23:40
-
-
Save joaquinmartinezrod/05d453e3ae659bbb9cf3f0e033f2041b to your computer and use it in GitHub Desktop.
Simple calculator on JavaFx.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package Componentes; | |
import javafx.geometry.Pos; | |
import javafx.scene.Scene; | |
import javafx.scene.control.Button; | |
import javafx.scene.control.TextField; | |
import javafx.scene.layout.GridPane; | |
import javafx.scene.layout.VBox; | |
import javafx.stage.Stage; | |
public class Calculator extends Stage { | |
private Button[] arrayBtn; | |
private TextField txtResultado; | |
private Scene scene; | |
private VBox vBox; | |
private GridPane gridPane; | |
private String [] stringOperacion = {"AC","7","4","1",".","√","8","5","2","0","x^2","9","6","3","=","/","+","-","*","+/-"}; | |
public Calculator(){ | |
CrearGUI(); | |
} | |
private void CrearGUI() { | |
vBox = new VBox(); | |
gridPane = new GridPane(); | |
txtResultado = new TextField(); | |
txtResultado.setText(""); | |
txtResultado.setMinSize(400,100); | |
txtResultado.setAlignment(Pos.CENTER_RIGHT); | |
txtResultado.setEditable(false); | |
arrayBtn = new Button[20]; | |
int x = 0; | |
for (int i = 0; i < 4; i++){ | |
for (int j = 0; j < 5; j++) { | |
arrayBtn[x] = new Button(stringOperacion[x]); | |
arrayBtn[x].setPrefSize(100,100); | |
final int f=x; | |
arrayBtn[f].setOnAction(event -> Evento(stringOperacion[f])); | |
gridPane.add(arrayBtn[x],i,j); | |
x++; | |
} | |
} | |
vBox.getChildren().addAll(txtResultado,gridPane); | |
scene = new Scene(vBox,400,600); | |
scene.getStylesheets().add("Estilos/calculadora.css"); | |
this.setScene(scene); | |
this.setTitle("Calculadora"); | |
this.show(); | |
this.setResizable(false); | |
} | |
public boolean error = false; | |
public char op; | |
public Double calculate; | |
public boolean finalOp = true; | |
public void Evento(String boton){ | |
switch (boton){ | |
case "AC": | |
txtResultado.setText(""); | |
calculate = 0.0; | |
error = false; | |
finalOp = true; | |
break; | |
case "+": | |
if(finalOp&&!"".equals(txtResultado.getText())&&!".".equals(txtResultado.getText())){ | |
calculate = Double.parseDouble(txtResultado.getText()); | |
txtResultado.setText(""); | |
op = '+'; | |
finalOp = false; | |
} | |
else{ | |
op = '+'; | |
txtResultado.setText(""); | |
} | |
break; | |
case "-": | |
if(finalOp&&!"".equals(txtResultado.getText())&&!".".equals(txtResultado.getText())){ | |
calculate = Double.parseDouble(txtResultado.getText()); | |
txtResultado.setText(""); | |
op = '-'; | |
finalOp = false; | |
} | |
else{ | |
op = '-'; | |
txtResultado.setText(""); | |
} | |
break; | |
case "/": | |
if(finalOp&&!"".equals(txtResultado.getText())&&!".".equals(txtResultado.getText())){ | |
calculate = Double.parseDouble(txtResultado.getText()); | |
txtResultado.setText(""); | |
op = '/'; | |
finalOp = false; | |
} | |
else{ | |
op = '/'; | |
txtResultado.setText(""); | |
} | |
break; | |
case "*": | |
if(finalOp&&!"".equals(txtResultado.getText())&&!".".equals(txtResultado.getText())){ | |
calculate = Double.parseDouble(txtResultado.getText()); | |
txtResultado.setText(""); | |
op = '*'; | |
finalOp = false; | |
} | |
else{ | |
op = '*'; | |
txtResultado.setText(""); | |
} | |
break; | |
case ".": | |
if(!txtResultado.getText().contains(".")) | |
txtResultado.appendText("."); | |
break; | |
case "√": | |
if(!"".equals(txtResultado.getText())&&!".".equals(txtResultado.getText())){ | |
double r = Double.parseDouble(txtResultado.getText()); | |
if(r>0){ | |
txtResultado.setText(String.valueOf(Math.sqrt(r))); | |
} | |
else{ | |
txtResultado.setText("MATH ERROR"); | |
error = true; | |
} | |
} | |
else | |
finalOp = false; | |
break; | |
case "x^2": | |
if(!"".equals(txtResultado.getText())&&!".".equals(txtResultado.getText())){ | |
double w = Double.parseDouble(txtResultado.getText()); | |
txtResultado.setText(""+(w*w)); | |
} | |
else | |
finalOp = false; | |
break; | |
case "+/-": | |
if(!"".equals(txtResultado.getText())&&!".".equals(txtResultado.getText())){ | |
double q = Double.parseDouble(txtResultado.getText()); | |
q = q*-1; | |
txtResultado.setText(""+q); | |
} | |
else | |
finalOp = false; | |
break; | |
case "=": | |
if(!"".equals(txtResultado.getText())&&!".".equals(txtResultado.getText())){ | |
switch(op){ | |
case '+': | |
txtResultado.setText(""+(calculate+Double.parseDouble(txtResultado.getText()))); | |
break; | |
case '-': | |
txtResultado.setText(""+(calculate-Double.parseDouble(txtResultado.getText()))); | |
break; | |
case '*': | |
txtResultado.setText(""+(calculate*Double.parseDouble(txtResultado.getText()))); | |
break; | |
case '/': | |
txtResultado.setText(""+(calculate/Double.parseDouble(txtResultado.getText()))); | |
break; | |
} | |
} | |
finalOp = true; | |
break; | |
default: | |
if(!error) | |
txtResultado.appendText(boton); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment