簡體   English   中英

Java GUI計算器文本字段

[英]Java GUI calculator textfield

嘗試制作Java計算器,但文本字段顯示不正確。 我想在相同的文本字段上顯示方程式和答案,而不是方程式然后給出答案。 希望能夠在同一行上顯示“ 1 + 1 = 2”。 如果執行此操作,代碼現在將如何顯示,下一行將顯示“ 1 + 1”,然后顯示2。

//global = global.concat(num1);

如果我刪除//,計算器將執行“ 1 + 1 =”,但答案不會顯示。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Scanner;
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

//import java.util.ActionEvent;
public class gui implements ActionListener {
    public gui() {
    }

    public void actionPerformed(ActionEvent ae) {
        // JOptionPane.showMessageDialog(ìHello is pressedî);
    }

    public static void main(String[] args) {
        JFrame j = new JFrame("Calculator");
        Container c = j.getContentPane();
        // c.setLayout(new BorderLayout());
        JPanel p1 = new JPanel();
        p1.setLayout(new BorderLayout());
        p1.setLayout(new GridLayout(4, 4, 4, 4));
        final JTextField t = new JTextField(100);
        Font myFontSize = t.getFont().deriveFont(Font.BOLD, 50f);
        t.setFont(myFontSize);
        c.add(t, BorderLayout.NORTH);
        final JButton n1 = new JButton("1");
        n1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n1.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n2 = new JButton("2");
        n2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n2.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n3 = new JButton("3");
        n3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n3.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n4 = new JButton("4");
        n4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n4.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n5 = new JButton("5");
        n5.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n5.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n6 = new JButton("6");
        n6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n6.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n7 = new JButton("7");
        n7.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n7.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n8 = new JButton("8");
        n8.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n8.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n9 = new JButton("9");
        n9.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n9.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n10 = new JButton("0");
        n10.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n10.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n11 = new JButton("+");
        n11.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n11.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n12 = new JButton("-");
        n12.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n12.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n13 = new JButton("*");
        n13.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n13.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n14 = new JButton("/");
        n14.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n14.getText();
                String global = t.getText();
                global = global.concat(num1);
                t.setText(global);
            }
        });
        final JButton n15 = new JButton("=");
        n15.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String num1 = n15.getText();
                String global = t.getText();
                // global = global.concat(num1);
                t.setText(global);
                ScriptEngineManager mgr = new ScriptEngineManager();
                ScriptEngine engine = mgr.getEngineByName("JavaScript");
                try {
                    String s = engine.eval(global).toString();
                    t.setText(s);
                } catch (ScriptException e1) {
                    e1.printStackTrace();
                }
            }
        });
        final JButton n16 = new JButton("C");
        n16.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // String num1 = n16.getText();
                String global = t.getText();
                global = null;
                t.setText(global);
            }
        });
        p1.add(n1);
        p1.add(n2);
        p1.add(n3);
        p1.add(n4);
        p1.add(n5);
        p1.add(n6);
        p1.add(n7);
        p1.add(n8);
        p1.add(n9);
        p1.add(n10);
        p1.add(n11);
        p1.add(n12);
        p1.add(n13);
        p1.add(n14);
        p1.add(n15);
        p1.add(n16);
        c.add(p1, BorderLayout.CENTER);
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        j.setSize(350, 350);
        j.setVisible(true);
    }
}

按下= ,只需將當前文本與結果連接起來,就像...

    final JButton n15 = new JButton("=");
    n15.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String num1 = n15.getText();
            String global = t.getText();
            t.setText(global);
            ScriptEngineManager mgr = new ScriptEngineManager();
            ScriptEngine engine = mgr.getEngineByName("JavaScript");
            try {
                String s = global + " = " +engine.eval(global).toString();
                t.setText(s);
            } catch (ScriptException e1) {
                e1.printStackTrace();
            }
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM