package com.jisuanqi;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;public class Jisuanqi implements ActionListener { // 定义成员变量
private JFrame jf;
private JPanel jp1;
private JPanel jp2;
private JPanel jp3;
private JButton[] jb;
private JTextField jt; public Jisuanqi() {
jf = new JFrame();
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jt = new JTextField(15);
jb = new JButton[17]; jb[0] = new JButton("7");
jb[1] = new JButton("8");
jb[2] = new JButton("9");
jb[3] = new JButton("+");
jb[3].setForeground(Color.red); // 设置按钮上字的颜色 jb[4] = new JButton("4");
jb[5] = new JButton("5");
jb[6] = new JButton("6");
jb[7] = new JButton("-");
jb[7].setForeground(Color.red); jb[8] = new JButton("1");
jb[9] = new JButton("2");
jb[10] = new JButton("3");
jb[11] = new JButton("*");
jb[11].setForeground(Color.red); jb[12] = new JButton("0");
jb[13] = new JButton(".");
jb[14] = new JButton("=");
jb[15] = new JButton("/");
jb[15].setForeground(Color.red);
jb[16] = new JButton("C");
jb[16].setForeground(Color.red); jp2.setLayout(new GridLayout(5, 4)); // 添加组件
for (int i = 0; i < jb.length; i++) {
jp2.add(jb[i]);
jb[i].addActionListener(this);
}
jp1.add(jt);
jp3.add(jp1, BorderLayout.SOUTH);
jp3.add(jp2, BorderLayout.NORTH); // 设置窗口的属性
jf.add(jp3);
jf.setTitle("计算器");
jf.setLocation(520, 300);
jf.setSize(173, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setResizable(false);
jf.setVisible(true); } public static void main(String[] args) {
Jisuanqi j = new Jisuanqi();
} @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object obj = e.getSource();
JButton jb = (JButton) (obj);
String s = jb.getText(); double f = 0; String[] a;
String b;
if (e.getSource() != null) { if(!e.getSource().equals("=")){
jt.setText(jt.getText() + s);
}else{ if (jt.getText().indexOf("+") > 0) {
a = jt.getText().split("+");
f = Double.parseDouble(a[0]) + Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
}
if (jt.getText().indexOf("-") > 0) {
a = jt.getText().split("-");
f = Double.parseDouble(a[0]) - Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
}
if (jt.getText().indexOf("*") > 0) {
a = jt.getText().split("*");
f = Double.parseDouble(a[0]) * Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
}
if (jt.getText().indexOf("/") > 0) {
try {
a = jt.getText().split("/");
f = Double.parseDouble(a[0])
/ Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
} catch (Exception e2) {
// TODO: handle exception
jt.setText("除数不能为0");
jt.getText();
}
}
if (e.getSource().equals("C")) {
jt.setText(" ");
jt.getText();
}
}
} //else if (e.getSource() != null && e.getSource().equals("=")) {
// if (e.getSource().equals("=")) {
//
// }
//
// } else
}
}
弄了好半天就是只能在输入框打出你按的按钮的值,老是不能计算,求大神帮看下,谢谢了
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;public class Jisuanqi implements ActionListener { // 定义成员变量
private JFrame jf;
private JPanel jp1;
private JPanel jp2;
private JPanel jp3;
private JButton[] jb;
private JTextField jt; public Jisuanqi() {
jf = new JFrame();
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jt = new JTextField(15);
jb = new JButton[17]; jb[0] = new JButton("7");
jb[1] = new JButton("8");
jb[2] = new JButton("9");
jb[3] = new JButton("+");
jb[3].setForeground(Color.red); // 设置按钮上字的颜色 jb[4] = new JButton("4");
jb[5] = new JButton("5");
jb[6] = new JButton("6");
jb[7] = new JButton("-");
jb[7].setForeground(Color.red); jb[8] = new JButton("1");
jb[9] = new JButton("2");
jb[10] = new JButton("3");
jb[11] = new JButton("*");
jb[11].setForeground(Color.red); jb[12] = new JButton("0");
jb[13] = new JButton(".");
jb[14] = new JButton("=");
jb[15] = new JButton("/");
jb[15].setForeground(Color.red);
jb[16] = new JButton("C");
jb[16].setForeground(Color.red); jp2.setLayout(new GridLayout(5, 4)); // 添加组件
for (int i = 0; i < jb.length; i++) {
jp2.add(jb[i]);
jb[i].addActionListener(this);
}
jp1.add(jt);
jp3.add(jp1, BorderLayout.SOUTH);
jp3.add(jp2, BorderLayout.NORTH); // 设置窗口的属性
jf.add(jp3);
jf.setTitle("计算器");
jf.setLocation(520, 300);
jf.setSize(173, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setResizable(false);
jf.setVisible(true); } public static void main(String[] args) {
Jisuanqi j = new Jisuanqi();
} @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object obj = e.getSource();
JButton jb = (JButton) (obj);
String s = jb.getText(); double f = 0; String[] a;
String b;
if (e.getSource() != null) { if(!e.getSource().equals("=")){
jt.setText(jt.getText() + s);
}else{ if (jt.getText().indexOf("+") > 0) {
a = jt.getText().split("+");
f = Double.parseDouble(a[0]) + Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
}
if (jt.getText().indexOf("-") > 0) {
a = jt.getText().split("-");
f = Double.parseDouble(a[0]) - Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
}
if (jt.getText().indexOf("*") > 0) {
a = jt.getText().split("*");
f = Double.parseDouble(a[0]) * Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
}
if (jt.getText().indexOf("/") > 0) {
try {
a = jt.getText().split("/");
f = Double.parseDouble(a[0])
/ Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
} catch (Exception e2) {
// TODO: handle exception
jt.setText("除数不能为0");
jt.getText();
}
}
if (e.getSource().equals("C")) {
jt.setText(" ");
jt.getText();
}
}
} //else if (e.getSource() != null && e.getSource().equals("=")) {
// if (e.getSource().equals("=")) {
//
// }
//
// } else
}
}
弄了好半天就是只能在输入框打出你按的按钮的值,老是不能计算,求大神帮看下,谢谢了
第二,我不建议使用Double来计划,Double存在精度的问题,比如你做个试验
System.out.println(2.00-1.90);看看结果为多少,
第三,楼主对对象的概念还是不清晰,e.getSource().equals("="),这两者怎么可能比较呢。。改了这一点就可以运行了计算了,
第四,即使运行还是有可能会报错,原因是+需要转义,
大体上调了一下,加减乘除没问题了,但是BUG还是很多,望楼主继续修改,楼主的界面还是做得蛮不错的。public class Test2 implements ActionListener { // 定义成员变量
private JFrame jf;
private JPanel jp1;
private JPanel jp2;
private JPanel jp3;
private JButton[] jb;
private JTextField jt; public Test2() {
jf = new JFrame();
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jt = new JTextField(15);
jb = new JButton[17];
jb[0] = new JButton("7");
jb[1] = new JButton("8");
jb[2] = new JButton("9");
jb[3] = new JButton("+");
jb[3].setForeground(Color.red);
// 设置按钮上字的颜色
jb[4] = new JButton("4");
jb[5] = new JButton("5");
jb[6] = new JButton("6");
jb[7] = new JButton("-");
jb[7].setForeground(Color.red);
jb[8] = new JButton("1");
jb[9] = new JButton("2");
jb[10] = new JButton("3");
jb[11] = new JButton("*");
jb[11].setForeground(Color.red);
jb[12] = new JButton("0");
jb[13] = new JButton(".");
jb[14] = new JButton("=");
jb[15] = new JButton("/");
jb[15].setForeground(Color.red);
jb[16] = new JButton("C");
jb[16].setForeground(Color.red);
jp2.setLayout(new GridLayout(5, 4));
// 添加组件
for (int i = 0; i < jb.length; i++) {
jp2.add(jb[i]);
jb[i].addActionListener(this);
}
jp1.add(jt);
jp3.add(jp1, BorderLayout.SOUTH);
jp3.add(jp2, BorderLayout.NORTH);
// 设置窗口的属性
jf.add(jp3);
jf.setTitle("计算器");
jf.setLocation(520, 300);
jf.setSize(173, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setResizable(false);
jf.setVisible(true);
} public static void main(String[] args) {
Test2 j = new Test2();
} @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object obj = e.getSource();
JButton jb = (JButton) (obj);
String s= jb.getText();
System.out.println(s);
double f = 0;
String[] a;
String b;
if (s != null) {
if (!s.equals("=")) {
jt.setText(jt.getText() + s);
} else {
if (jt.getText().indexOf("+") > 0) {
System.out.println(jt.getText());
a = jt.getText().split("\\+");
f = Double.parseDouble(a[0]) + Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
}
if (jt.getText().indexOf("-") > 0) {
a = jt.getText().split("-");
f = Double.parseDouble(a[0]) - Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
}
if (jt.getText().indexOf("*") > 0) {
a = jt.getText().split("*");
f = Double.parseDouble(a[0]) * Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
}
if (jt.getText().indexOf("/") > 0) {
try {
a = jt.getText().split("/");
f = Double.parseDouble(a[0]) / Double.parseDouble(a[1]);
b = "" + f;
jt.setText(b);
jt.getText();
} catch (Exception e2) {
// TODO: handle exception
jt.setText("除数不能为0");
jt.getText();
}
}
if (e.getSource().equals("C")) {
jt.setText(" ");
jt.getText();
}
}
}
}
}