Guest User

Untitled

a guest
Jun 21st, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.18 KB | None | 0 0
  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.GridLayout;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.text.DecimalFormat;
  8. import javax.swing.*;
  9. import javax.swing.border.*;
  10.  
  11. public class Calculator {
  12.  
  13. JFrame frame;
  14. JTextField numField;
  15. JTextField hisField;
  16. JPanel buttonsPanel;
  17. JPanel fieldPanel;
  18.  
  19. String numDisplay = "0";
  20. String hisDisplay = "";
  21.  
  22. double tempNum1;
  23. double tempNum2;
  24. DecimalFormat df = new DecimalFormat("########.########");
  25. boolean calculate;
  26. String operator;
  27. boolean reset;
  28.  
  29. public static void main(String[] args) {
  30. Calculator calc = new Calculator();
  31. calc.buildGUI();
  32. }
  33.  
  34. public void buildGUI() {
  35. //make the Frame
  36. frame = new JFrame("Calculator");
  37. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  38.  
  39. //Aesthetics
  40. Color backgroundColor = new Color(56, 56, 56);
  41.  
  42. //Make the border/background
  43. BorderLayout layout = new BorderLayout();
  44. JPanel background = new JPanel(layout);
  45. background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
  46. background.setBackground(backgroundColor);
  47.  
  48. // Build the fieldPanel
  49. // Build the numField
  50. numField = new JTextField(numDisplay);
  51. numField.setEditable(false);
  52. numField.setFont(new Font("Arial", Font.BOLD, 60));
  53. numField.setBackground(backgroundColor);
  54. numField.setForeground(Color.WHITE);
  55. Border line = BorderFactory.createLineBorder(Color.WHITE, 0);
  56. Border empty = new EmptyBorder(0, 10, 10, 10);
  57. CompoundBorder border = new CompoundBorder(line, empty);
  58. numField.setBorder(border);
  59. numField.setHorizontalAlignment(JTextField.RIGHT);
  60. //Build the hisField
  61. hisField = new JTextField("");
  62. hisField.setEditable(false);
  63. hisField.setFont(new Font("Arial", Font.BOLD, 20));
  64. hisField.setBackground(backgroundColor);
  65. hisField.setForeground(Color.lightGray);
  66. hisField.setHorizontalAlignment(JTextField.RIGHT);
  67. hisField.setBorder(new EmptyBorder(50,0,10,10));
  68. //Build the Panel
  69. fieldPanel = new JPanel();
  70. fieldPanel.setLayout(new BoxLayout(fieldPanel, BoxLayout.Y_AXIS));
  71. fieldPanel.add(hisField);
  72. fieldPanel.add(numField);
  73.  
  74. //make Grid
  75. GridLayout grid = new GridLayout(5,4);
  76. grid.setVgap(1);
  77. grid.setHgap(3);
  78. //make the Panel for Buttons
  79. buttonsPanel = new JPanel(grid);
  80. buttonsPanel.setBackground(backgroundColor);
  81. buttonsPanel.setBorder( new EmptyBorder(10, 0, 0, 0));
  82.  
  83. //build Buttons
  84. Font buttonsFont = new Font("Arial", Font.PLAIN, 25);
  85. Color funcButtonsColor = new Color(24, 24, 24);
  86. Color numButtonsColor = Color.BLACK;
  87.  
  88. JButton CE = new JButton("CE");
  89. CE.setBackground(funcButtonsColor);
  90. CE.setForeground(Color.lightGray);
  91. CE.setFont(buttonsFont);
  92. CE.setBorder(new LineBorder(backgroundColor, 5));
  93. buttonsPanel.add(CE);
  94. CE.addActionListener(new CEListener());
  95.  
  96. JButton C = new JButton("C");
  97. C.setBackground(funcButtonsColor);
  98. C.setForeground(Color.lightGray);
  99. C.setFont(buttonsFont);
  100. C.setBorder(new LineBorder(backgroundColor, 5));
  101. buttonsPanel.add(C);
  102. C.addActionListener(new CListener());
  103.  
  104. JButton del = new JButton("del");
  105. del.setBackground(funcButtonsColor);
  106. del.setForeground(Color.lightGray);
  107. del.setFont(buttonsFont);
  108. del.setBorder(new LineBorder(backgroundColor, 5));
  109. buttonsPanel.add(del);
  110. del.addActionListener(new delListener());
  111.  
  112. JButton div = new JButton("÷");
  113. div.setBackground(funcButtonsColor);
  114. div.setForeground(Color.lightGray);
  115. div.setFont(buttonsFont);
  116. div.setBorder(new LineBorder(backgroundColor, 5));
  117. buttonsPanel.add(div);
  118. div.addActionListener(new divListener());
  119.  
  120. JButton seven = new JButton("7");
  121. seven.setBackground(numButtonsColor);
  122. seven.setForeground(Color.lightGray);
  123. seven.setFont(buttonsFont);
  124. seven.setBorder(new LineBorder(backgroundColor, 5));
  125. buttonsPanel.add(seven);
  126. seven.addActionListener(new sevenListener());
  127.  
  128. JButton eight = new JButton("8");
  129. eight.setBackground(numButtonsColor);
  130. eight.setForeground(Color.lightGray);
  131. eight.setFont(buttonsFont);
  132. eight.setBorder(new LineBorder(backgroundColor, 5));
  133. buttonsPanel.add(eight);
  134. eight.addActionListener(new eightListener());
  135.  
  136. JButton nine = new JButton("9");
  137. nine.setBackground(numButtonsColor);
  138. nine.setForeground(Color.lightGray);
  139. nine.setFont(buttonsFont);
  140. nine.setBorder(new LineBorder(backgroundColor, 5));
  141. buttonsPanel.add(nine);
  142. nine.addActionListener(new nineListener());
  143.  
  144. JButton times = new JButton("×");
  145. times.setBackground(funcButtonsColor);
  146. times.setForeground(Color.lightGray);
  147. times.setFont(buttonsFont);
  148. times.setBorder(new LineBorder(backgroundColor, 5));
  149. buttonsPanel.add(times);
  150. times.addActionListener(new timesListener());
  151.  
  152. JButton four = new JButton("4");
  153. four.setBackground(numButtonsColor);
  154. four.setForeground(Color.lightGray);
  155. four.setFont(buttonsFont);
  156. four.setBorder(new LineBorder(backgroundColor, 5));
  157. buttonsPanel.add(four);
  158. four.addActionListener(new fourListener());
  159.  
  160. JButton five = new JButton("5");
  161. five.setBackground(numButtonsColor);
  162. five.setForeground(Color.lightGray);
  163. five.setFont(buttonsFont);
  164. five.setBorder(new LineBorder(backgroundColor, 5));
  165. buttonsPanel.add(five);
  166. five.addActionListener(new fiveListener());
  167.  
  168. JButton six = new JButton("6");
  169. six.setBackground(numButtonsColor);
  170. six.setForeground(Color.lightGray);
  171. six.setFont(buttonsFont);
  172. six.setBorder(new LineBorder(backgroundColor, 5));
  173. buttonsPanel.add(six);
  174. six.addActionListener(new sixListener());
  175.  
  176. JButton minus = new JButton("−");
  177. minus.setBackground(funcButtonsColor);
  178. minus.setForeground(Color.lightGray);
  179. minus.setFont(buttonsFont);
  180. minus.setBorder(new LineBorder(backgroundColor, 5));
  181. buttonsPanel.add(minus);
  182. minus.addActionListener(new minusListener());
  183.  
  184. JButton one = new JButton("1");
  185. one.setBackground(numButtonsColor);
  186. one.setForeground(Color.lightGray);
  187. one.setFont(buttonsFont);
  188. one.setBorder(new LineBorder(backgroundColor, 5));
  189. buttonsPanel.add(one);
  190. one.addActionListener(new oneListener());
  191.  
  192. JButton two = new JButton("2");
  193. two.setBackground(numButtonsColor);
  194. two.setForeground(Color.lightGray);
  195. two.setFont(buttonsFont);
  196. two.setBorder(new LineBorder(backgroundColor, 5));
  197. buttonsPanel.add(two);
  198. two.addActionListener(new twoListener());
  199.  
  200. JButton three = new JButton("3");
  201. three.setBackground(numButtonsColor);
  202. three.setForeground(Color.lightGray);
  203. three.setFont(buttonsFont);
  204. three.setBorder(new LineBorder(backgroundColor, 5));
  205. buttonsPanel.add(three);
  206. three.addActionListener(new threeListener());
  207.  
  208. JButton plus = new JButton("+");
  209. plus.setBackground(funcButtonsColor);
  210. plus.setForeground(Color.lightGray);
  211. plus.setFont(buttonsFont);
  212. plus.setBorder(new LineBorder(backgroundColor, 5));
  213. buttonsPanel.add(plus);
  214. plus.addActionListener(new plusListener());
  215.  
  216. JButton plusMinus = new JButton("±");
  217. plusMinus.setBackground(funcButtonsColor);
  218. plusMinus.setForeground(Color.lightGray);
  219. plusMinus.setFont(buttonsFont);
  220. plusMinus.setBorder(new LineBorder(backgroundColor, 5));
  221. buttonsPanel.add(plusMinus);
  222. plusMinus.addActionListener(new plusMinusListener());
  223.  
  224. JButton zero = new JButton("0");
  225. zero.setBackground(numButtonsColor);
  226. zero.setForeground(Color.lightGray);
  227. zero.setFont(buttonsFont);
  228. zero.setBorder(new LineBorder(backgroundColor, 5));
  229. buttonsPanel.add(zero);
  230. zero.addActionListener(new zeroListener());
  231.  
  232. JButton dec = new JButton(".");
  233. dec.setBackground(funcButtonsColor);
  234. dec.setForeground(Color.lightGray);
  235. dec.setFont(buttonsFont);
  236. dec.setBorder(new LineBorder(backgroundColor, 5));
  237. buttonsPanel.add(dec);
  238. dec.addActionListener(new decListener());
  239.  
  240. JButton solve = new JButton("=");
  241. solve.setBackground(funcButtonsColor);
  242. solve.setForeground(Color.lightGray);
  243. solve.setFont(buttonsFont);
  244. solve.setBorder(new LineBorder(backgroundColor, 5));
  245. buttonsPanel.add(solve);
  246. solve.addActionListener(new solveListener());
  247.  
  248.  
  249. background.add(BorderLayout.NORTH, fieldPanel);
  250. background.add(BorderLayout.CENTER, buttonsPanel);
  251. frame.getContentPane().add(background);
  252. frame.setSize(400, 550);
  253. frame.setVisible(true);
  254. }
  255.  
  256. public void operate() {
  257. try {
  258. if (operator.equals("divide")) {
  259. tempNum1= tempNum1 / tempNum2;
  260. }
  261. if (operator.equals("multiply")) {
  262. tempNum1 = tempNum1 * tempNum2;
  263. }
  264. if (operator.equals("subtract")) {
  265. tempNum1= tempNum1 - tempNum2;
  266. }
  267. if (operator.equals("add")) {
  268. tempNum1 = tempNum1 + tempNum2;
  269. }
  270. } catch (Exception ex) {}
  271. }
  272.  
  273. public class CEListener implements ActionListener {
  274. @Override
  275. public void actionPerformed(ActionEvent a) {
  276. numDisplay = "0";
  277. numField.setText(numDisplay);
  278. }
  279. }
  280. public class CListener implements ActionListener {
  281. @Override
  282. public void actionPerformed(ActionEvent a) {
  283. numDisplay = "0";
  284. hisDisplay = "";
  285. hisField.setText(hisDisplay);
  286. numField.setText(numDisplay);
  287. calculate = false;
  288. operator = null;
  289. }
  290. }
  291. public class delListener implements ActionListener {
  292. @Override
  293. public void actionPerformed(ActionEvent a) {
  294. if (numField.getText().length() == 1) {
  295. numDisplay = "0";
  296. numField.setText(numDisplay);
  297. } else {
  298. numDisplay = numField.getText().substring(0, numField.getText().length() - 1)+ "";
  299. numField.setText(numDisplay);
  300. }
  301. }
  302. }
  303. public class solveListener implements ActionListener {
  304. @Override
  305. public void actionPerformed(ActionEvent a) {
  306. tempNum2 = Double.parseDouble(numField.getText());
  307. operate();
  308. numDisplay = df.format(tempNum1);
  309. numField.setText(df.format(tempNum1));
  310. calculate = false;
  311. reset = true;
  312. hisDisplay = "";
  313. tempNum1 = 0.0d;
  314. tempNum2 = 0.0d;
  315. hisField.setText(hisDisplay);
  316. }
  317. }
  318. public class plusMinusListener implements ActionListener {
  319. @Override
  320. public void actionPerformed(ActionEvent a) {
  321. double negative = Double.parseDouble(numField.getText());
  322. negative = -negative;
  323. numDisplay = String.valueOf(df.format(negative));
  324. numField.setText(numDisplay);
  325. }
  326. }
  327. public class decListener implements ActionListener {
  328. @Override
  329. public void actionPerformed(ActionEvent a) {
  330. numDisplay = numField.getText() + ".";
  331. numField.setText(numDisplay);
  332. }
  333. }
  334.  
  335. public class divListener implements ActionListener {
  336. @Override
  337. public void actionPerformed(ActionEvent a) {
  338. hisDisplay = hisDisplay + numDisplay + " ÷ ";
  339. hisField.setText(hisDisplay);
  340. if (calculate) {
  341. tempNum2 = Double.parseDouble(numDisplay);
  342. operate();
  343. numDisplay = df.format(tempNum1);
  344. numField.setText(numDisplay);
  345. } else {
  346. operator = "divide";
  347. tempNum1 = Double.parseDouble(numDisplay);
  348. }
  349. calculate = true;
  350. operator = "divide";
  351. reset = true;
  352. }
  353. }
  354. public class timesListener implements ActionListener {
  355. @Override
  356. public void actionPerformed(ActionEvent a) {
  357. hisDisplay = hisDisplay + numDisplay + " × ";
  358. hisField.setText(hisDisplay);
  359. if (calculate) {
  360. tempNum2 = Double.parseDouble(numDisplay);
  361. operate();
  362. numDisplay = df.format(tempNum1);
  363. numField.setText(numDisplay);
  364. } else {
  365. operator = "multiply";
  366. tempNum1 = Double.parseDouble(numDisplay);
  367. }
  368. calculate = true;
  369. operator = "multiply";
  370. reset = true;
  371. }
  372. }
  373. public class minusListener implements ActionListener {
  374. @Override
  375. public void actionPerformed(ActionEvent a) {
  376. hisDisplay = hisDisplay + numDisplay + " − ";
  377. hisField.setText(hisDisplay);
  378. if (calculate) {
  379. tempNum2 = Double.parseDouble(numDisplay);
  380. operate();
  381. numDisplay = df.format(tempNum1);
  382. numField.setText(numDisplay);
  383. } else {
  384. operator = "subtract";
  385. tempNum1 = Double.parseDouble(numDisplay);
  386. }
  387. calculate = true;
  388. operator = "subtract";
  389. reset = true;
  390. }
  391. }
  392. public class plusListener implements ActionListener {
  393. @Override
  394. public void actionPerformed(ActionEvent a) {
  395. hisDisplay = hisDisplay + numDisplay + " + ";
  396. hisField.setText(hisDisplay);
  397. if (calculate) {
  398. tempNum2 = Double.parseDouble(numDisplay);
  399. operate();
  400. numDisplay = df.format(tempNum1);
  401. numField.setText(numDisplay);
  402. } else {
  403. operator = "add";
  404. tempNum1 = Double.parseDouble(numDisplay);
  405. }
  406. calculate = true;
  407. operator = "add";
  408. reset = true;
  409. }
  410. }
  411.  
  412. public class oneListener implements ActionListener {
  413. @Override
  414. public void actionPerformed(ActionEvent a) {
  415. if (numField.getText().equals("0")) {
  416. numDisplay = "1";
  417. } else {
  418. numDisplay = numField.getText() + "1";
  419. }
  420. if (reset) {
  421. numDisplay = "1";
  422. reset = false;
  423. }
  424. numField.setText(numDisplay);
  425. }
  426. }
  427. public class twoListener implements ActionListener {
  428. @Override
  429. public void actionPerformed(ActionEvent a) {
  430. if (numField.getText().equals("0")) {
  431. numDisplay = "2";
  432. } else {
  433. numDisplay = numField.getText() + "2";
  434. }
  435. if (reset) {
  436. numDisplay = "2";
  437. reset = false;
  438. }
  439. numField.setText(numDisplay);
  440. }
  441. }
  442. public class threeListener implements ActionListener {
  443. @Override
  444. public void actionPerformed(ActionEvent a) {
  445. if (numField.getText().equals("0")) {
  446. numDisplay = "3";
  447. } else {
  448. numDisplay = numField.getText() + "3";
  449. }
  450. if (reset) {
  451. numDisplay = "3";
  452. reset = false;
  453. }
  454. numField.setText(numDisplay);
  455. }
  456. }
  457. public class fourListener implements ActionListener {
  458. @Override
  459. public void actionPerformed(ActionEvent a) {
  460. if (numField.getText().equals("0")) {
  461. numDisplay = "4";
  462. } else {
  463. numDisplay = numField.getText() + "4";
  464. }
  465. if (reset) {
  466. numDisplay = "4";
  467. reset = false;
  468. }
  469. numField.setText(numDisplay);
  470. }
  471. }
  472. public class fiveListener implements ActionListener {
  473. @Override
  474. public void actionPerformed(ActionEvent a) {
  475. if (numField.getText().equals("0")) {
  476. numDisplay = "5";
  477. } else {
  478. numDisplay = numField.getText() + "5";
  479. }
  480. if (reset) {
  481. numDisplay = "5";
  482. reset = false;
  483. }
  484. numField.setText(numDisplay);
  485. }
  486. }
  487. public class sixListener implements ActionListener {
  488. @Override
  489. public void actionPerformed(ActionEvent a) {
  490. if (numField.getText().equals("0")) {
  491. numDisplay = "6";
  492. } else {
  493. numDisplay = numField.getText() + "6";
  494. }
  495. if (reset) {
  496. numDisplay = "6";
  497. reset = false;
  498. }
  499. numField.setText(numDisplay);
  500. }
  501. }
  502. public class sevenListener implements ActionListener {
  503. @Override
  504. public void actionPerformed(ActionEvent a) {
  505. if (numField.getText().equals("0")) {
  506. numDisplay = "7";
  507. } else {
  508. numDisplay = numField.getText() + "7";
  509. }
  510. if (reset) {
  511. numDisplay = "7";
  512. reset = false;
  513. }
  514. numField.setText(numDisplay);
  515. }
  516. }
  517. public class eightListener implements ActionListener {
  518. @Override
  519. public void actionPerformed(ActionEvent a) {
  520. if (numField.getText().equals("0")) {
  521. numDisplay = "8";
  522. } else {
  523. numDisplay = numField.getText() + "8";
  524. }
  525. if (reset) {
  526. numDisplay = "8";
  527. reset = false;
  528. }
  529. numField.setText(numDisplay);
  530. }
  531. }
  532. public class nineListener implements ActionListener {
  533. @Override
  534. public void actionPerformed(ActionEvent a) {
  535. if (numField.getText().equals("0")) {
  536. numDisplay = "9";
  537. } else {
  538. numDisplay = numField.getText() + "9";
  539. }
  540. if (reset) {
  541. numDisplay = "9";
  542. reset = false;
  543. }
  544. numField.setText(numDisplay);
  545. }
  546. }
  547. public class zeroListener implements ActionListener {
  548. @Override
  549. public void actionPerformed(ActionEvent a) {
  550. if (numField.getText().equals("0")) {
  551. numDisplay = "0";
  552. } else {
  553. numDisplay = numField.getText() + "0";
  554. }
  555. if (reset) {
  556. numDisplay = "0";
  557. reset = false;
  558. }
  559. numField.setText(numDisplay);
  560. }
  561. }
  562. }
Add Comment
Please, Sign In to add comment