Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.74 KB | None | 0 0
  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.EventQueue;
  4. import java.awt.Font;
  5. import java.awt.GridLayout;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8.  
  9. import javax.swing.ButtonGroup;
  10. import javax.swing.JButton;
  11. import javax.swing.JFrame;
  12. import javax.swing.JLabel;
  13. import javax.swing.JMenu;
  14. import javax.swing.JMenuBar;
  15. import javax.swing.JPanel;
  16. import javax.swing.JRadioButton;
  17. import javax.swing.border.EmptyBorder;
  18.  
  19. public class CalculatorFrame extends JFrame implements ActionListener{
  20.  
  21. private JPanel contentPane;
  22. private JMenu jMenuFile, jMenuHelp;
  23. private JPanel jMaster, jplBackSpace, jplControl;
  24. private JLabel jLabelOuput;
  25. private JButton JbnButtons[];
  26. private JRadioButton JrnButtons[];
  27. private boolean firstInput = true;
  28. private String numStr1 = "0";
  29. private String numStr2 = "0";
  30. Font f12 = new Font("Times New Roman", 0, 12);
  31. Font f121 = new Font("Times New Roman", 1, 12);
  32. private String op;
  33.  
  34.  
  35.  
  36.  
  37.  
  38. /**
  39. * Launch the application.
  40. */
  41. public static void main(String[] args) {
  42. EventQueue.invokeLater(new Runnable() {
  43. public void run() {
  44. try {
  45. CalculatorFrame frame = new CalculatorFrame();
  46. frame.setVisible(true);
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. });
  52. }
  53.  
  54. /**
  55. * Create the frame.
  56. */
  57. public CalculatorFrame() {
  58. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  59. setBounds(100, 100, 450, 300);
  60. contentPane = new JPanel();
  61. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  62. contentPane.setLayout(new BorderLayout(0, 0));
  63. setContentPane(contentPane);
  64.  
  65. // MEnu File
  66. jMenuFile = new JMenu("File");
  67.  
  68. // MEnu Help
  69. jMenuHelp = new JMenu("Help");
  70.  
  71. // Menu Bar
  72. JMenuBar mb = new JMenuBar();
  73. mb.add(jMenuFile);
  74. mb.add(jMenuHelp);
  75. setJMenuBar(mb);
  76.  
  77. // frame componant
  78. jMaster = new JPanel();
  79. jLabelOuput = new JLabel("0");
  80.  
  81. // add our componante to frame
  82. getContentPane().add(jLabelOuput, BorderLayout.NORTH);
  83.  
  84. JbnButtons = new JButton[25];
  85. JrnButtons = new JRadioButton[4];
  86. ButtonGroup bg=new ButtonGroup();
  87.  
  88. JrnButtons[0] = new JRadioButton("Base 2");
  89. JrnButtons[1] = new JRadioButton("Base 8");
  90. JrnButtons[2] = new JRadioButton("Base 10");
  91. JrnButtons[3] = new JRadioButton("Base 16");
  92. bg.add(JrnButtons[0]);
  93. bg.add(JrnButtons[1]);
  94. bg.add(JrnButtons[2]);
  95. bg.add(JrnButtons[3]);
  96. for(int i = 0; i<= 9; i++) {
  97. JbnButtons[i] = new JButton(String.valueOf(i));
  98. }
  99.  
  100.  
  101. // Create operator Jbuttons
  102. JbnButtons[10] = new JButton("+/-");
  103. JbnButtons[11] = new JButton(".");
  104. JbnButtons[12] = new JButton("=");
  105. JbnButtons[13] = new JButton("/");
  106. JbnButtons[14] = new JButton("*");
  107. JbnButtons[15] = new JButton("-");
  108. JbnButtons[16] = new JButton("+");
  109. JbnButtons[17] = new JButton("sqrt");
  110. JbnButtons[18] = new JButton("1/x");
  111. JbnButtons[19] = new JButton("%");
  112. jplBackSpace = new JPanel();
  113. jplBackSpace.setLayout(new GridLayout(1, 1, 2, 2));
  114. JbnButtons[20] = new JButton("Backspace");
  115. jplBackSpace.add(JbnButtons[20]);
  116. jplControl = new JPanel();
  117. jplControl.setLayout(new GridLayout(1, 2, 2, 2));
  118. JbnButtons[21] = new JButton(" CE ");
  119. JbnButtons[22] = new JButton("C");
  120.  
  121. JbnButtons[23] = new JButton("A");
  122. JbnButtons[24] = new JButton("B");
  123.  
  124. jplControl.add(JbnButtons[21]);
  125. jplControl.add(JbnButtons[22]);
  126. // Setting all Numbered JButton's to Blue. The rest to Red
  127. for (int i = 0; i < JbnButtons.length; i++) {
  128. JbnButtons[i].setFont(f12);
  129. if (i < 10)
  130. JbnButtons[i].setForeground(Color.blue);
  131. else
  132. JbnButtons[i].setForeground(Color.red);
  133. }
  134.  
  135. JPanel jPLButtons = new JPanel();
  136. jPLButtons.setLayout(new GridLayout(4, 5));
  137.  
  138. // add button to the jPLButtons
  139. for(int i = 7; i<=9; i++) {
  140. jPLButtons.add(JbnButtons[i]);
  141. }
  142.  
  143.  
  144. // add button / and sqrt
  145. jPLButtons.add(JbnButtons[13]);
  146. jPLButtons.add(JbnButtons[17]);
  147. // Second row
  148. for (int i = 4; i <= 6; i++) {
  149. jPLButtons.add(JbnButtons[i]);
  150. }
  151. // add button * and x^2
  152. jPLButtons.add(JbnButtons[14]);
  153. jPLButtons.add(JbnButtons[18]);
  154. // Third row
  155. for (int i = 1; i <= 3; i++) {
  156. jPLButtons.add(JbnButtons[i]);
  157. }
  158. //adds button - and %
  159. jPLButtons.add(JbnButtons[15]);
  160. jPLButtons.add(JbnButtons[19]);
  161. //Fourth Row
  162. // add 0, +/-, ., +, and =
  163. jPLButtons.add(JbnButtons[0]);
  164. jPLButtons.add(JbnButtons[10]);
  165. jPLButtons.add(JbnButtons[11]);
  166. jPLButtons.add(JbnButtons[16]);
  167. jPLButtons.add(JbnButtons[12]);
  168.  
  169. JPanel jRDButton = new JPanel();
  170. jRDButton.setLayout(new GridLayout(1, 4));
  171.  
  172. jRDButton.add(JrnButtons[0]);
  173. jRDButton.add(JrnButtons[1]);
  174. jRDButton.add(JrnButtons[2]);
  175. jRDButton.add(JrnButtons[3]);
  176.  
  177. JPanel jHexButton = new JPanel();
  178. jHexButton.setLayout(new GridLayout(1, 6 , 2 , 2));
  179.  
  180. jHexButton.add(JbnButtons[23]);
  181. jHexButton.add(JbnButtons[24]);
  182.  
  183. // JPANEL MASET
  184. jMaster.setLayout(new BorderLayout());
  185. jMaster.add(jPLButtons, BorderLayout.SOUTH);
  186. jMaster.add(jRDButton, BorderLayout.NORTH);
  187. jMaster.add(jplBackSpace, BorderLayout.WEST);
  188. jMaster.add(jplControl, BorderLayout.EAST);
  189. jMaster.add(jHexButton);
  190.  
  191.  
  192.  
  193. // add component to frame
  194. getContentPane().add(jMaster, BorderLayout.SOUTH);
  195. requestFocus();
  196.  
  197. //add listener to button
  198. for(int i = 0; i< JbnButtons.length; i++) {
  199. JbnButtons[i].addActionListener(this);
  200. }
  201. for(int i = 0; i< JrnButtons.length; i++) {
  202. JrnButtons[i].addActionListener(this);
  203. }
  204. JrnButtons[2].setSelected(true);
  205. }
  206.  
  207. @Override
  208. public void actionPerformed(ActionEvent e) {
  209. // TODO Auto-generated method stub
  210. String resultStr="0";
  211. String str = String.valueOf(e.getActionCommand());
  212.  
  213. System.out.println(str);
  214. switch(str)
  215. {
  216. case "0": case "1": case "2":
  217. case "3": case "4": case "5":
  218. case "6": case "7": case "8":
  219. case "9": if(firstInput)
  220. {
  221. numStr1 = numStr1 + str;
  222. jLabelOuput.setText(numStr1);
  223. }
  224. else
  225. {
  226. numStr2 = numStr2 + str;
  227. jLabelOuput.setText(numStr2);
  228. }
  229. break;
  230. case "+":
  231. case "-":
  232. case "*":
  233. case "%":
  234. case "/": op = str;
  235. firstInput = false;
  236. break;
  237. case "=":
  238. if (numStr1 != null && numStr2 != null && op != null) {
  239. resultStr = String.valueOf(evaluate());
  240. jLabelOuput.setText(resultStr);
  241. numStr1 = resultStr;
  242. numStr2 = "";
  243. firstInput = true;
  244. }
  245. else {
  246. resultStr = numStr1;
  247. }
  248. break;
  249. case "C": jLabelOuput.setText("");
  250. numStr1 = "0";
  251. numStr2 = "0";
  252. firstInput = true;
  253. break;
  254. case "1/x":
  255. op = str;
  256. numStr2 = "0";
  257. firstInput = true;
  258. break;
  259. case "+/-":
  260. numStr1=String.valueOf(-Double.parseDouble(numStr1));
  261. jLabelOuput.setText(numStr1);
  262. firstInput = true;
  263. break;
  264. case "sqrt":
  265. numStr1=String.valueOf(Math.sqrt(Double.parseDouble(numStr1)));
  266. jLabelOuput.setText(numStr1);
  267. firstInput = true;
  268. break;
  269. case ".":
  270. numStr1=numStr1.concat(".");
  271. jLabelOuput.setText(numStr1);
  272. break;
  273. }
  274. }
  275.  
  276. private double evaluate() {
  277. double resultat=0;
  278. double x = Double.parseDouble(numStr1);
  279. double y = Double.parseDouble(numStr2);
  280.  
  281. switch(op)
  282. {
  283. case "+": resultat = x + y; break;
  284. case "-": resultat = x - y; break;
  285. case "*": resultat = x * y; break;
  286. case "/": resultat = x / y; break;
  287. case "%": resultat = x % y; break;
  288. case "1/x": resultat = 1 / x; break;
  289. }
  290.  
  291. return resultat;
  292. }
  293. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement