Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Main {
    public static void main(String[] args) {
        ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");

        String[] ops = { "+", "-", "*", "/" };

        JPanel gui = new JPanel(new BorderLayout(2, 2));
        JPanel labels = new JPanel(new GridLayout(0, 1));
        gui.add(labels, BorderLayout.WEST);
        labels.add(new JLabel("a"));
        labels.add(new JLabel("operand"));
        labels.add(new JLabel("b"));
        labels.add(new JLabel("="));

        JPanel controls = new JPanel(new GridLayout(0, 1));
        gui.add(controls, BorderLayout.CENTER);
        JTextField a = new JTextField(10);
        controls.add(a);
        JComboBox operand = new JComboBox(ops);
        controls.add(operand);
        JTextField b = new JTextField(10);
        controls.add(b);
        JTextField output = new JTextField(10);
        controls.add(output);

        ActionListener al = new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                String expression = a.getText() + operand.getSelectedItem() + b.getText();
                try {
                    Object result = engine.eval(expression);
                    if (result == null) {
                        output.setText("Output was 'null'");
                    } else {
                        output.setText(result.toString());
                    }
                } catch (ScriptException se) {
                    output.setText(se.getMessage());
                }
            }
        };

        operand.addActionListener(al);
        a.addActionListener(al);
        b.addActionListener(al);

        JOptionPane.showMessageDialog(null, gui);
    }
}