Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.zajecia_nr_4;
- import java.awt.EventQueue;
- import org.mariuszgromada.math.mxparser.*;
- import javax.swing.JFrame;
- import net.miginfocom.swing.MigLayout;
- import javax.swing.JButton;
- import javax.swing.JList;
- import javax.swing.JTextArea;
- import javax.swing.JTextField;
- import javax.swing.JMenuBar;
- import javax.swing.JOptionPane;
- import javax.swing.JScrollPane;
- import javax.swing.JMenu;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import javax.swing.ButtonGroup;
- import javax.swing.DefaultListModel;
- import java.awt.event.ActionListener;
- import java.awt.event.ActionEvent;
- import java.awt.Toolkit;
- import javax.swing.JScrollBar;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- public class NASA extends JFrame {
- private String lastEquation;
- private JTextField textField;
- private final ButtonGroup buttonGroup = new ButtonGroup();
- /**
- * Launch the application.
- */
- public static void main(String[] args) {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- try {
- NASA frame = new NASA();
- frame.setVisible(true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- public class Function {
- String name;
- String function;
- Function(String _name, String _function) {
- name = _name;
- function = _function;
- }
- @Override
- public String toString() {
- return name;
- }
- }
- /**
- * Create the frame.
- */
- public NASA() {
- setIconImage(
- Toolkit.getDefaultToolkit().getImage(NASA.class.getResource("/resources/200px-NASA_logo.svg.png")));
- setTitle("NASA - Patryk Stach");
- setBounds(100, 100, 500, 400);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- getContentPane()
- .setLayout(new MigLayout("", "[grow][grow][][][][][][][][][][][][grow]", "[][grow][][][][][][]"));
- JTextArea textArea = new JTextArea();
- textArea.setRows(15);
- textArea.setColumns(150);
- textArea.setEditable(false);
- getContentPane().add(textArea, "flowx,cell 0 0 13 7,grow");
- DefaultListModel<Function> model = new DefaultListModel<>();
- JList<Function> list = new JList<>(model);
- model.addElement(new Function("Sinus", "sin()"));
- model.addElement(new Function("Cosinus", "cos()"));
- model.addElement(new Function("Tangens", "tg()"));
- model.addElement(new Function("Cotangens", "ctg()"));
- model.addElement(new Function("Logarytm Naturalny", "ln()"));
- model.addElement(new Function("[PI]", "pi"));
- model.addElement(new Function("[e]", "e"));
- model.addElement(new Function("[gam]", "[gam]"));
- model.addElement(new Function("+", "+"));
- model.addElement(new Function("-", "-"));
- model.addElement(new Function("*", "*"));
- model.addElement(new Function("[Ostatni wynik]", ""));
- getContentPane().add(list, "cell 13 0 1 7,alignx right,growy");
- list.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent evt) {
- JList list = (JList) evt.getSource();
- if (evt.getClickCount() == 2) {
- int index = list.locationToIndex(evt.getPoint());
- textField.setText(textField.getText() + model.getElementAt(index).function);
- }
- }
- });
- textField = new JTextField();
- textField.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent arg0) {
- String textFieldValue = textField.getText();
- textField.setText(textField.getText().concat("1"));
- }
- });
- getContentPane().add(textField, "cell 0 7 13 1,growx,aligny center");
- textField.setColumns(41);
- JButton btnNewButton = new JButton("Daj wynik!");
- btnNewButton.addMouseListener(new MouseAdapter() {
- @Override
- public void mouseClicked(MouseEvent arg0) {
- Expression expression = new Expression(textField.getText());
- if (expression.checkSyntax()) {
- Double result = expression.calculate();
- model.removeElementAt(11);
- model.addElement(new Function("[Ostatni wynik]", result.toString()));
- textArea.setText(textArea.getText() + "\n" + textField.getText() + "=" + result);
- lastEquation = textField.getText();
- textField.setText("");
- textField.requestFocusInWindow();
- } else {
- String errorMessage = expression.getErrorMessage();
- System.err.println(errorMessage);
- }
- }
- });
- textField.addKeyListener(new KeyAdapter() {
- @Override
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == KeyEvent.VK_UP) {
- e.consume();
- textField.setText(lastEquation);
- textField.requestFocusInWindow();
- }
- if (e.getKeyCode() == KeyEvent.VK_ENTER) {
- e.consume();
- Expression expression = new Expression(textField.getText());
- if (expression.checkSyntax()) {
- Double result = expression.calculate();
- model.removeElementAt(11);
- model.addElement(new Function("[Ostatni wynik]", result.toString()));
- textArea.setText(textArea.getText() + "\n" + textField.getText() + "=" + result);
- lastEquation = textField.getText();
- textField.setText("");
- textField.requestFocusInWindow();
- } else {
- String errorMessage = expression.getErrorMessage();
- System.err.println(errorMessage);
- }
- }
- }
- });
- getContentPane().add(btnNewButton, "cell 13 7,growx");
- JScrollBar scrollBar = new JScrollBar();
- getContentPane().add(scrollBar, "cell 0 1");
- JMenuBar menuBar = new JMenuBar();
- setJMenuBar(menuBar);
- JMenu mnNewMenu = new JMenu("Menu");
- buttonGroup.add(mnNewMenu);
- menuBar.add(mnNewMenu);
- JButton btnOpcje = new JButton("Opcje");
- mnNewMenu.add(btnOpcje);
- JButton btnReset = new JButton("Reset");
- btnReset.addMouseListener(new MouseAdapter() {
- @Override
- public void mouseClicked(MouseEvent e) {
- textField.setText("");
- textArea.setText("");
- textField.requestFocusInWindow();
- }
- });
- mnNewMenu.add(btnReset);
- JButton btnWyjscie = new JButton("Wyjscie");
- btnWyjscie.addMouseListener(new MouseAdapter() {
- @Override
- public void mouseClicked(MouseEvent e) {
- System.exit(0);
- int dialogButton = JOptionPane.OK_CANCEL_OPTION;
- JOptionPane.showConfirmDialog(null, "Czy na pewno chcesz wylaczyc program?", "UWAGA!", dialogButton);
- if (dialogButton == JOptionPane.OK_OPTION) {
- System.exit(0);
- }
- }
- });
- mnNewMenu.add(btnWyjscie);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement