├── .classpath
├── .gitignore
├── .project
├── .settings
└── org.eclipse.jdt.core.prefs
├── README.md
├── bin
├── application
│ ├── Main.class
│ ├── MainViewController.class
│ └── application.css
└── view
│ └── MainView.fxml
├── build.fxbuild
├── calculator1.png
└── src
├── application
├── Main.java
├── MainViewController.java
└── application.css
└── view
└── MainView.fxml
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | JFXcalculator
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.xtext.ui.shared.xtextBuilder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.xtext.ui.shared.xtextNature
21 | org.eclipse.jdt.core.javanature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # javaFX-Calculator
2 | 
3 |
--------------------------------------------------------------------------------
/bin/application/Main.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joiro/javaFX-Calculator/ec31ad10838759ef11968de066da96b82ca38894/bin/application/Main.class
--------------------------------------------------------------------------------
/bin/application/MainViewController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joiro/javaFX-Calculator/ec31ad10838759ef11968de066da96b82ca38894/bin/application/MainViewController.class
--------------------------------------------------------------------------------
/bin/application/application.css:
--------------------------------------------------------------------------------
1 | /* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */
2 |
3 | .text-area {
4 | -fx-text-fill: #ffffff;
5 | -fx-font-size: 25px;
6 | -fx-font-family: "Helvetica Neue Light";
7 | }
8 |
9 | .text-area .content {
10 | -fx-background-color: grey;
11 | }
12 |
13 | .text-area *.text {
14 | -fx-text-alignment: right;
15 | }
16 |
17 | .button {
18 | -fx-background-radius: 0;
19 | -fx-background-color: #E0E0E0;
20 | -fx-font-family: "Helvetica Neue Light";
21 | -fx-font-size: 21px;
22 | }
23 |
24 | .button:pressed {
25 | -fx-background-color: #B2B2B2;
26 | }
27 |
28 | .operators {
29 | -fx-background-color: #FE9340;
30 | -fx-text-fill: #ffffff;
31 | }
32 |
33 | .operators:pressed {
34 | -fx-background-color: darkorange;
35 | }
36 |
37 | .topOperators {
38 | -fx-background-color: #D6D6D6;
39 | }
--------------------------------------------------------------------------------
/bin/view/MainView.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/build.fxbuild:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/calculator1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joiro/javaFX-Calculator/ec31ad10838759ef11968de066da96b82ca38894/calculator1.png
--------------------------------------------------------------------------------
/src/application/Main.java:
--------------------------------------------------------------------------------
1 | package application;
2 |
3 | import java.io.IOException;
4 |
5 | import javafx.application.Application;
6 | import javafx.event.ActionEvent;
7 | import javafx.event.EventHandler;
8 | import javafx.fxml.FXMLLoader;
9 | import javafx.scene.Scene;
10 | import javafx.scene.control.Menu;
11 | import javafx.scene.control.MenuBar;
12 | import javafx.scene.control.MenuItem;
13 | import javafx.scene.layout.AnchorPane;
14 | import javafx.scene.layout.BorderPane;
15 | import javafx.stage.Stage;
16 |
17 |
18 | public class Main extends Application {
19 |
20 | private Stage primaryStage;
21 | private AnchorPane anchorPane;
22 | MenuBar menuBar = new MenuBar();
23 |
24 | @Override
25 | public void start(Stage primaryStage) {
26 | this.primaryStage = primaryStage;
27 | primaryStage.setResizable(false);
28 | //addMenuBar();
29 | mainView();
30 | //newView();
31 | }
32 |
33 | public void addMenuBar() {
34 |
35 | Menu menu = new Menu("Menu");
36 | MenuItem mi = new MenuItem("Close");
37 | mi.setOnAction(new EventHandler() {
38 | public void handle(ActionEvent t) {
39 | System.exit(0);
40 | }
41 | });
42 | menu.getItems().add(mi);
43 | menuBar.getMenus().add(menu);
44 |
45 | final String os = System.getProperty("os.name");
46 | if (os != null && os.startsWith("Mac"))
47 | menuBar.useSystemMenuBarProperty().set(true);
48 |
49 | BorderPane borderPane = new BorderPane();
50 | borderPane.setTop(menuBar);
51 |
52 | primaryStage.setScene(new Scene(borderPane));
53 | primaryStage.show();
54 | }
55 |
56 | public static void main(String[] args) {
57 | launch(args);
58 | }
59 |
60 | public void mainView() {
61 | try {
62 | FXMLLoader loader = new FXMLLoader(Main.class.getResource("/view/mainView.fxml"));
63 | anchorPane = (AnchorPane) loader.load();
64 |
65 | MainViewController controller = loader.getController();
66 | controller.setMain(this);
67 |
68 | Scene scene = new Scene(anchorPane);
69 | primaryStage.setScene(scene);
70 | primaryStage.show();
71 | } catch (IOException e) {
72 | // TODO Auto-generated catch block
73 | e.printStackTrace();
74 | }
75 | }
76 |
77 | public void newView() {
78 | try {
79 | FXMLLoader loader = new FXMLLoader(Main.class.getResource("/view/NewView.fxml"));
80 | anchorPane = (AnchorPane) loader.load();
81 |
82 | MainViewController controller = loader.getController();
83 | controller.setMain(this);
84 |
85 | Scene scene = new Scene(anchorPane);
86 | primaryStage.setScene(scene);
87 | primaryStage.show();
88 | } catch (IOException e) {
89 | // TODO Auto-generated catch block
90 | e.printStackTrace();
91 | }
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/src/application/MainViewController.java:
--------------------------------------------------------------------------------
1 | package application;
2 |
3 | import javafx.event.Event;
4 | import javafx.fxml.FXML;
5 | import javafx.scene.control.Button;
6 | import javafx.scene.control.TextArea;
7 |
8 | public class MainViewController {
9 |
10 | @FXML private TextArea display;
11 | @FXML private Button one, two, three, four, five, six, seven, eight, nine, zero, times, divided, plus, minus, percent, change, buttonDelete;
12 |
13 | private Boolean[] operator = new Boolean[4];
14 | private int operatorCount = 0;
15 |
16 | double[] temporary = {0, 0};
17 |
18 | private String actualText;
19 |
20 | private Main main;
21 |
22 | public void setMain(Main main) {
23 | this.main = main;
24 | display.setEditable(false);
25 |
26 | display.setText("0");
27 | for(int i = 0; i<4; i++) {
28 | operator[i] = false;
29 | }
30 | }
31 |
32 | @FXML
33 | public void handleClick(Event event){
34 | actualText = display.getText();
35 | if (display.getText().equals("0") || display.getText() == "0"){
36 | buttonDelete.setText("C");
37 | display.setText("");
38 | System.out.println("actualText: "+actualText);
39 | actualText = "";
40 | }
41 | Button btn = (Button) event.getSource();
42 | switch(btn.getId()) {
43 | case "zero" :
44 | display.appendText("0");
45 | break;
46 | case "one" :
47 | display.appendText("1");
48 | break;
49 | case "two" :
50 | display.appendText("2");
51 | break;
52 | case "three" :
53 | display.appendText("3");
54 | break;
55 | case "four" :
56 | display.appendText("4");
57 | break;
58 | case "five" :
59 | display.appendText("5");
60 | break;
61 | case "six" :
62 | display.appendText("6");
63 | break;
64 | case "seven" :
65 | display.appendText("7");
66 | break;
67 | case "eight" :
68 | display.appendText("8");
69 | break;
70 | case "nine" :
71 | display.appendText("9");
72 | break;
73 | case "comma" :
74 | display.appendText(".");
75 | break;
76 | }
77 | }
78 |
79 | @FXML public void delete(Event event) {
80 | buttonDelete.setText("AC");
81 | display.setText("0");
82 | for(int i = 0; i < 2; i++) {
83 | temporary[i] = 0;
84 | }
85 | for(int i = 0; i<4; i++) {
86 | operator[i] = false;
87 | }
88 | }
89 |
90 |
91 | @FXML public void operation(Event event) {
92 |
93 | operatorCount ++;
94 | System.out.println("operatorCount: "+operatorCount);
95 | if (display.getText() != ""){
96 | actualText = display.getText();
97 | }
98 | Button btn = (Button) event.getSource();
99 | String operation = btn.getId();
100 | switch(operation) {
101 | case "plus":
102 | operator[1] = true;
103 | temporary[0] = Double.parseDouble(display.getText());
104 | break;
105 | case "minus":
106 | operator[2] = true;
107 | temporary[0] = Double.parseDouble(display.getText());
108 | break;
109 | case "times":
110 | operator[3] = true;
111 | temporary[0] = Double.parseDouble(display.getText());
112 | break;
113 | case "divided":
114 | operator[4] = true;
115 | temporary[0] = Double.parseDouble(display.getText());
116 | break;
117 | }
118 | display.setText("");
119 | }
120 |
121 |
122 | @FXML public void changeSign() {
123 | double number = Double.parseDouble(display.getText());
124 | try {
125 | if (number != 0){
126 | number = number * (-1);
127 | display.setText(Double.toString(number));
128 | System.out.println(number);
129 | } else {
130 | }
131 | } catch (NumberFormatException e) {
132 | e.printStackTrace();
133 | }
134 | }
135 |
136 | @FXML public void result(Event event) {
137 | double result = 0;
138 | temporary[1] = Double.parseDouble(display.getText());
139 | String temp0 = Double.toString(temporary[0]);
140 | String temp1 = Double.toString(temporary[1]);
141 | if (operator[1]){
142 | result = temporary[0] + temporary[1];
143 | } else if (operator[2]){
144 | result = temporary[0] - temporary[1];
145 | } else if (operator[3]){
146 | result = temporary[0] * temporary[1];
147 | } else if (operator[4]){
148 | result = temporary[0] / temporary[1];
149 | }
150 | System.out.println("result: "+result);
151 | display.setText(Double.toString(result));
152 | }
153 | }
--------------------------------------------------------------------------------
/src/application/application.css:
--------------------------------------------------------------------------------
1 | /* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */
2 |
3 | .text-area {
4 | -fx-text-fill: #ffffff;
5 | -fx-font-size: 25px;
6 | -fx-font-family: "Helvetica Neue Light";
7 | }
8 |
9 | .text-area .content {
10 | -fx-background-color: grey;
11 | }
12 |
13 | .text-area *.text {
14 | -fx-text-alignment: right;
15 | }
16 |
17 | .button {
18 | -fx-background-radius: 0;
19 | -fx-background-color: #E0E0E0;
20 | -fx-font-family: "Helvetica Neue Light";
21 | -fx-font-size: 21px;
22 | }
23 |
24 | .button:pressed {
25 | -fx-background-color: #B2B2B2;
26 | }
27 |
28 | .operators {
29 | -fx-background-color: #FE9340;
30 | -fx-text-fill: #ffffff;
31 | }
32 |
33 | .operators:pressed {
34 | -fx-background-color: darkorange;
35 | }
36 |
37 | .topOperators {
38 | -fx-background-color: #D6D6D6;
39 | }
--------------------------------------------------------------------------------
/src/view/MainView.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------