Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.29 KB | None | 0 0
  1. package com.zajecia_nr_4;
  2.  
  3. import java.awt.EventQueue;
  4. import org.mariuszgromada.math.mxparser.*;
  5.  
  6. import javax.swing.JFrame;
  7. import net.miginfocom.swing.MigLayout;
  8. import javax.swing.JButton;
  9. import javax.swing.JList;
  10. import javax.swing.JTextArea;
  11. import javax.swing.JTextField;
  12. import javax.swing.JMenuBar;
  13. import javax.swing.JOptionPane;
  14. import javax.swing.JScrollPane;
  15. import javax.swing.JMenu;
  16. import java.awt.event.MouseAdapter;
  17. import java.awt.event.MouseEvent;
  18. import javax.swing.ButtonGroup;
  19. import javax.swing.DefaultListModel;
  20.  
  21. import java.awt.event.ActionListener;
  22. import java.awt.event.ActionEvent;
  23. import java.awt.Toolkit;
  24. import javax.swing.JScrollBar;
  25. import java.awt.event.KeyAdapter;
  26. import java.awt.event.KeyEvent;
  27.  
  28. public class NASA extends JFrame {
  29. private String lastEquation;
  30. private JTextField textField;
  31. private final ButtonGroup buttonGroup = new ButtonGroup();
  32.  
  33. /**
  34. * Launch the application.
  35. */
  36. public static void main(String[] args) {
  37. EventQueue.invokeLater(new Runnable() {
  38. public void run() {
  39. try {
  40. NASA frame = new NASA();
  41. frame.setVisible(true);
  42. } catch (Exception e) {
  43. e.printStackTrace();
  44. }
  45. }
  46. });
  47. }
  48.  
  49. public class Function {
  50. String name;
  51. String function;
  52.  
  53. Function(String _name, String _function) {
  54. name = _name;
  55. function = _function;
  56. }
  57.  
  58. @Override
  59. public String toString() {
  60. return name;
  61. }
  62. }
  63.  
  64. /**
  65. * Create the frame.
  66. */
  67. public NASA() {
  68. setIconImage(
  69. Toolkit.getDefaultToolkit().getImage(NASA.class.getResource("/resources/200px-NASA_logo.svg.png")));
  70. setTitle("NASA - Patryk Stach");
  71. setBounds(100, 100, 500, 400);
  72. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  73. getContentPane()
  74. .setLayout(new MigLayout("", "[grow][grow][][][][][][][][][][][][grow]", "[][grow][][][][][][]"));
  75.  
  76. JTextArea textArea = new JTextArea();
  77. textArea.setRows(15);
  78. textArea.setColumns(150);
  79. textArea.setEditable(false);
  80. getContentPane().add(textArea, "flowx,cell 0 0 13 7,grow");
  81.  
  82. DefaultListModel<Function> model = new DefaultListModel<>();
  83. JList<Function> list = new JList<>(model);
  84. model.addElement(new Function("Sinus", "sin()"));
  85. model.addElement(new Function("Cosinus", "cos()"));
  86. model.addElement(new Function("Tangens", "tg()"));
  87. model.addElement(new Function("Cotangens", "ctg()"));
  88. model.addElement(new Function("Logarytm Naturalny", "ln()"));
  89. model.addElement(new Function("[PI]", "pi"));
  90. model.addElement(new Function("[e]", "e"));
  91. model.addElement(new Function("[gam]", "[gam]"));
  92. model.addElement(new Function("+", "+"));
  93. model.addElement(new Function("-", "-"));
  94. model.addElement(new Function("*", "*"));
  95. model.addElement(new Function("[Ostatni wynik]", ""));
  96. getContentPane().add(list, "cell 13 0 1 7,alignx right,growy");
  97.  
  98. list.addMouseListener(new MouseAdapter() {
  99. public void mouseClicked(MouseEvent evt) {
  100. JList list = (JList) evt.getSource();
  101. if (evt.getClickCount() == 2) {
  102. int index = list.locationToIndex(evt.getPoint());
  103. textField.setText(textField.getText() + model.getElementAt(index).function);
  104. }
  105. }
  106. });
  107.  
  108. textField = new JTextField();
  109.  
  110. textField.addActionListener(new ActionListener() {
  111. public void actionPerformed(ActionEvent arg0) {
  112. String textFieldValue = textField.getText();
  113. textField.setText(textField.getText().concat("1"));
  114. }
  115. });
  116. getContentPane().add(textField, "cell 0 7 13 1,growx,aligny center");
  117. textField.setColumns(41);
  118.  
  119. JButton btnNewButton = new JButton("Daj wynik!");
  120. btnNewButton.addMouseListener(new MouseAdapter() {
  121. @Override
  122. public void mouseClicked(MouseEvent arg0) {
  123. Expression expression = new Expression(textField.getText());
  124. if (expression.checkSyntax()) {
  125. Double result = expression.calculate();
  126. model.removeElementAt(11);
  127. model.addElement(new Function("[Ostatni wynik]", result.toString()));
  128. textArea.setText(textArea.getText() + "\n" + textField.getText() + "=" + result);
  129. lastEquation = textField.getText();
  130. textField.setText("");
  131. textField.requestFocusInWindow();
  132. } else {
  133. String errorMessage = expression.getErrorMessage();
  134. System.err.println(errorMessage);
  135. }
  136. }
  137. });
  138.  
  139. textField.addKeyListener(new KeyAdapter() {
  140. @Override
  141. public void keyPressed(KeyEvent e) {
  142. if (e.getKeyCode() == KeyEvent.VK_UP) {
  143. e.consume();
  144. textField.setText(lastEquation);
  145. textField.requestFocusInWindow();
  146. }
  147.  
  148. if (e.getKeyCode() == KeyEvent.VK_ENTER) {
  149. e.consume();
  150. Expression expression = new Expression(textField.getText());
  151. if (expression.checkSyntax()) {
  152. Double result = expression.calculate();
  153. model.removeElementAt(11);
  154. model.addElement(new Function("[Ostatni wynik]", result.toString()));
  155. textArea.setText(textArea.getText() + "\n" + textField.getText() + "=" + result);
  156. lastEquation = textField.getText();
  157. textField.setText("");
  158. textField.requestFocusInWindow();
  159. } else {
  160. String errorMessage = expression.getErrorMessage();
  161. System.err.println(errorMessage);
  162. }
  163. }
  164. }
  165. });
  166.  
  167. getContentPane().add(btnNewButton, "cell 13 7,growx");
  168.  
  169. JScrollBar scrollBar = new JScrollBar();
  170. getContentPane().add(scrollBar, "cell 0 1");
  171.  
  172. JMenuBar menuBar = new JMenuBar();
  173. setJMenuBar(menuBar);
  174.  
  175. JMenu mnNewMenu = new JMenu("Menu");
  176. buttonGroup.add(mnNewMenu);
  177. menuBar.add(mnNewMenu);
  178.  
  179. JButton btnOpcje = new JButton("Opcje");
  180. mnNewMenu.add(btnOpcje);
  181.  
  182. JButton btnReset = new JButton("Reset");
  183. btnReset.addMouseListener(new MouseAdapter() {
  184. @Override
  185. public void mouseClicked(MouseEvent e) {
  186. textField.setText("");
  187. textArea.setText("");
  188. textField.requestFocusInWindow();
  189. }
  190. });
  191. mnNewMenu.add(btnReset);
  192.  
  193. JButton btnWyjscie = new JButton("Wyjscie");
  194. btnWyjscie.addMouseListener(new MouseAdapter() {
  195. @Override
  196. public void mouseClicked(MouseEvent e) {
  197. System.exit(0);
  198.  
  199. int dialogButton = JOptionPane.OK_CANCEL_OPTION;
  200. JOptionPane.showConfirmDialog(null, "Czy na pewno chcesz wylaczyc program?", "UWAGA!", dialogButton);
  201.  
  202. if (dialogButton == JOptionPane.OK_OPTION) {
  203. System.exit(0);
  204. }
  205. }
  206.  
  207. });
  208. mnNewMenu.add(btnWyjscie);
  209.  
  210. }
  211.  
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement