【问题标题】:Java GUI calculator textfieldJava GUI 计算器文本字段
【发布时间】:2017-11-29 02:55:40
【问题描述】:

尝试制作 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);
    }
}

【问题讨论】:

  • 为什么没有缩进?
  • 冲刺并不能真正缩进它,因为我在我的手机上。对不起。

标签: java swing user-interface calculator


【解决方案1】:

按下= 时,只需将当前文本与结果连接起来,类似于...

    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();
            }
        }
    });

【讨论】:

  • 感谢您的帮助。回家后试试看
  • 如果我不想使用 javascripts 进行计算但使用其他方法,我是否必须更改整个程序?哦,只是“=”部分?
  • 到目前为止我认为只有= 部分
猜你喜欢
  • 2013-08-18
  • 2015-05-12
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
相关资源
最近更新 更多