Java图形界面简单计算器
示例代码如下,请参考:
package test.com.test;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Cal {
TextField tf = new TextField(40); //显示文本框
StringBuffer s1 = new StringBuffer(); //记录运算数字,以及保留结果
StringBuffer s2 = new StringBuffer(); //记录运算数字,保留上一个输入的数字或运算结果
static String flag = new String(); //标记运算符号:+,-,*,/
boolean start = true; //标记运算开始或结束,保证一次运算之后,第二次进行运算时能同时清空显示界面,即s1为空
public void init(){
//主界面
JFrame f = new JFrame(“计算器”);
JPanel p1 = new JPanel();
p1.add(tf);
f.add(p1,BorderLayout.NORTH);
JPanel p2 = new JPanel();
p2.setLayout(new GridLayout(1,3));
//动作监听器
ActionListener listen =new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//输入数字0~9
if(arg0.getActionCommand()==”0″){
if(!s1.toString().equals(new String())){
if(!start){
//s1清零,保证可以重新输入数字
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“0”).toString());
}
游宴 }
if(arg0.getActionCommand()==”1″){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“1”).toString());
}
if(arg0.getActionCommand()==”2″){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“2”).toString());
}
神锋银 if(arg0.getActionCommand()==”3″){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“3”).toString());
}
if(arg0.getActionCommand()==”4″){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“4”).toString());
基档 }
if(arg0.getActionCommand()==”5″){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“5”).toString());
}
if(arg0.getActionCommand()==”6″){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“6”).toString());
}
if(arg0.getActionCommand()==”7″){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“7”).toString());
}
if(arg0.getActionCommand()==”8″){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“8”).toString());
}
if(arg0.getActionCommand()==”9″){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append(“9”).toString());
}
//输入小数点
if(arg0.getActionCommand()==”.”){
if(!start){
s1.delete(0, s1.length());
}
start=true;
if(s1.toString().equals(new String()))
tf.setText(s1.append(“0.”).toString());
else if(s1.length()==1s1.charAt(0)==’-‘)
tf.setText(s1.append(“0.”).toString());
else
tf.setText(s1.append(“.”).toString());
}
//输入负号
if(arg0.getActionCommand()==”+/-“){
if(!start){
s1.delete(0, s1.length());
}
start = true;
if(s1.toString().equals(new String()))
tf.setText(s1.append(‘-‘).toString());
}
//退格Backspace
if(arg0.getActionCommand()==”Backspace”){
start = true;
if(s1.length()!=0){
//删除最后输入的一位
s1.deleteCharAt(s1.length()-1);
tf.setText(s1.toString());
}
}
//归零CE
if(arg0.getActionCommand()==”CE”){
//清空所有,start标记设为true
start = true;
s1.delete(0, s1.length());
s2.delete(0, s2.length());
tf.setText(s1.toString());
}
//清除C
if(arg0.getActionCommand()==”C”){
//清空当前输入,即s1清零
start = true;
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//加号
if(arg0.getActionCommand()==”+”){
start = true;
flag=”+”;
//s2接收s1的值
s2.append(String.valueOf(s1.toString()));
//s1清零,重新接收下一个数据
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//减号
if(arg0.getActionCommand()==”-“){
start = true;
flag=”-“;
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//乘号
if(arg0.getActionCommand()==”*”){
start = true;
flag=”*”;
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//除号
if(arg0.getActionCommand()==”/”){
start = true;
flag=”/”;
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//开根号
if(arg0.getActionCommand()==”sqrt”){
start =false;
double s=Double.parseDouble(s1.toString());
s1.delete(0, s1.length());
tf.setText(s1.append(String.valueOf(Math.sqrt(s))).toString());
}
//求%
if(arg0.getActionCommand()==”%”){
start =false;
double s=Double.parseDouble(s1.toString());
s1.delete(0, s1.length());
tf.setText(s1.append(String.valueOf(s/100)).toString());
}
//求1/x
if(arg0.getActionCommand()==”1/x”!s1.toString().equals(new String())Double.parseDouble(s1.toString())!=0){
start =false;
double s=Double.parseDouble(s1.toString());
s1.delete(0, s1.length());
tf.setText(s1.append(String.valueOf(1/s)).toString());
}
//求结果
if(arg0.getActionCommand()==”=”s1.length()!=0s2.length()!=0){
//start标记为false
start =false;
//分别获取s1和s2的值
double s4=Double.parseDouble(s1.toString());
double s3=Double.parseDouble(s2.toString());
//清空s1和s2,便于开始下一次运算
s1.delete(0, s1.length());
s2.delete(0, s2.length());
//四则运算
if(flag==”+”){
tf.setText(s1.append(String.valueOf(s3+s4)).toString());
}
if(flag==”-“){
tf.setText(s1.append(String.valueOf(s3-s4)).toString());
}
if(flag==”*”){
tf.setText(s1.append(String.valueOf(s3*s4)).toString());
}
if(flag==”/”){
tf.setText(s1.append(String.valueOf(s3/s4)).toString());
}
}
}
};
//添加按钮以及监听器
JButton bks = new JButton(“Backspace”);
bks.addActionListener(listen);
JButton ce = new JButton(“CE”);
ce.addActionListener(listen);
JButton c = new JButton(“C”);
c.addActionListener(listen);
p2.add(bks);
p2.add(ce);
p2.add(c);
f.add(p2);
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(4,5));
JButton b1 = new JButton(“7”);
p3.add(b1);
b1.addActionListener(listen);
JButton b2 = new JButton(“8”);
p3.add(b2);
b2.addActionListener(listen);
JButton b3 = new JButton(“9”);
p3.add(b3);
b3.addActionListener(listen);
JButton b4 = new JButton(“/”);
p3.add(b4);
b4.addActionListener(listen);
JButton b5 = new JButton(“sqrt”);
p3.add(b5);
b5.addActionListener(listen);
JButton b6 = new JButton(“4”);
p3.add(b6);
b6.addActionListener(listen);
JButton b7 = new JButton(“5”);
p3.add(b7);
b7.addActionListener(listen);
JButton b8 = new JButton(“6”);
p3.add(b8);
b8.addActionListener(listen);
JButton b9 = new JButton(“*”);
p3.add(b9);
b9.addActionListener(listen);
JButton b10 = new JButton(“%”);
p3.add(b10);
b10.addActionListener(listen);
JButton b11 = new JButton(“1”);
p3.add(b11);
b11.addActionListener(listen);
JButton b12 = new JButton(“2”);
p3.add(b12);
b12.addActionListener(listen);
JButton b13 = new JButton(“3”);
p3.add(b13);
b13.addActionListener(listen);
JButton b14 = new JButton(“-“);
p3.add(b14);
b14.addActionListener(listen);
JButton b15 = new JButton(“1/x”);
p3.add(b15);
b15.addActionListener(listen);
JButton b16 = new JButton(“0”);
p3.add(b16);
b16.addActionListener(listen);
JButton b17 = new JButton(“+/-“);
p3.add(b17);
b17.addActionListener(listen);
JButton b18 = new JButton(“.”);
p3.add(b18);
b18.addActionListener(listen);
JButton b19 = new JButton(“+”);
p3.add(b19);
b19.addActionListener(listen);
JButton b20 = new JButton(“=”);
p3.add(b20);
b20.addActionListener(listen);
f.add(p3,BorderLayout.SOUTH);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.pack();
f.setVisible(true);
}
public static void main(String args[]){
//调用方法,实现计算器
new Cal().init();
}
}
java 实现一个简单的计算器,能做100以内的加减乘除
网上找的,如果你枯茄是要求的这样的,自己写也要好一会:
import java.awt.*;
import java.awt.event.*;
public class Calculator {
private Frame f;
private TextField tf = new TextField(30);
private long result;
private boolean append = false;
private Button[] btn = new Button[15];
private char operator = ‘=’;
public static void main(String[] args) {
new Calculator().go();
}
public Calculator() {
initComponent();
}
private void initComponent() {
f = new Frame(“Java Calculator”);
f.setLayout(new BorderLayout()); // The frame uses BorderLayout
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
Panel centerPanel = new Panel();
centerPanel.setLayout(new GridLayout(5, 3)); // The panel uses GridLayout
NumberListener nl = new NumberListener();
OperatorListener ol = new OperatorListener();
btn[10] = new Button(“+”);
btn[11] = new Button(“-“);
btn[12] = new Button(“*”);
btn[13] = new Button(“/”);
btn[14] = new Button(“=”);
for (int i = 0; i = 9; i++) {
btn[i] = new Button(String.valueOf(i));
centerPanel.add(btn[i]);
btn[i].addActionListener(nl);
if (i % 2 == 1) {
centerPanel.add(btn[(i + 19) / 2]);
btn[(i + 19) / 2].addActionListener(ol);
}
}
f.add(centerPanel, BorderLayout.CENTER);
Panel northPanel = new Panel();
tf.setEditable(false);
northPanel.add(tf);
f.add(northPanel, BorderLayout.NORTH);
}
public void go() {
f.pack();
f.setVisible(true);
}
/察悄**
* 采用成员内部类没没察方式,实现监听器接口,方便访问主类内类内部成员。 此类负责数字按钮Action事件监听和处理
*/
class NumberListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (!append) {
tf.setText(“”);
append = true;
}
String s = tf.getText();
s += e.getActionCommand();
tf.setText(s);
if (!btn[10].isEnabled()) {
for (int i = 10; i = 14; i++)
btn[i].setEnabled(true);
}
}
}
/**
* 成员内部类,负责操作符按钮的事件处理
*/
class OperatorListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (!append)
return;
for (int i = 10; i = 14; i++)
btn[i].setEnabled(false);
String s = tf.getText();
long num = Long.parseLong(s);// get the number of textfield
append = false; // set append
switch (operator) {
case ‘+’:
result += num;
break;
case ‘-‘:
result -= num;
break;
case ‘*’:
result *= num;
break;
case ‘/’: {
if (num == 0)
result = 0;
else
result /= num;
break;
}
case ‘=’:
result = num;
break;
}
tf.setText(String.valueOf(result));
// set the value of result to textfield
String op = e.getActionCommand();
operator = op.charAt(0); // set operator
}
}
}
求用JAVA语言创建一个简单计算器
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
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.JTextArea;
public class calculator implements ActionListener {
JFrame frame=new JFrame();
private JButton[] b;
private JButton b2;
private JTextArea t;
private JButton jbtnsqrt;
private boolean flag=false;
public calculator() {
jbtnsqrt=new JButton(“Sqrt”);
b=new JButton[16];
b2=new JButton(“C”);
String str=”123+456-789×0.=/”;
for(int i=0;ib.length;i++){
b[i]=new JButton(str.substring(i,i+1));
}
}
private void setFontAndColor(){
Font f=new Font(“宋体”,Font.BOLD,18);
t.setFont(f);
for(int i=0;ib.length;i++){
b[i].setFont(f);
}
}
private void init(){
t=new JTextArea(1,20);
JPanel northPanel=new JPanel();
JPanel centerPanel=new JPanel();
northPanel.setLayout(new FlowLayout());
centerPanel.setLayout(new GridLayout(4,4));
northPanel.add(t);
northPanel.add(b2);
northPanel.add(jbtnsqrt);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b2.setBackground(Color.RED);
b2.setForeground(Color.green);
b2.addActionListener(this);
jbtnsqrt.addActionListener(this);
for(int i=0;ib.length;i++){
centerPanel.add(b[i]);
b[i].addActionListener(this);
}
frame.setLayout(new BorderLayout());
frame.add(northPanel,BorderLayout.NORTH);
frame.add(centerPanel, BorderLayout.CENTER);
setFontAndColor();
frame.setLocation(340,300);
frame.setVisible(true);
frame.pack();
frame.setResizable(false);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b2) t.setText(null);//纯信橘点击C时做团清空文本域坦派
else if(e.getSource()==b[14]){ //点击=时读取文本域的字符串
String s=t.getText().trim();
String[] rs;
if(s.contains(“+”)){
rs=s.split(“\\+”);
double d=Double.parseDouble(rs[0])+Double.parseDouble(rs[1]);
t.setText(String.valueOf(d));
}
else if(s.contains(“-“)){
rs=s.split(“-“);
double d=Double.parseDouble(rs[0])-Double.parseDouble(rs[1]);
t.setText(String.valueOf(d));
}
else if(s.contains(“x”)){
rs=s.split(“x”);
double d=Double.parseDouble(rs[0])*Double.parseDouble(rs[1]);
t.setText(String.valueOf(d));
}
else if(s.contains(“/”)){
rs=s.split(“/”);
double d=Double.parseDouble(rs[0])/Double.parseDouble(rs[1]);
t.setText(String.valueOf(d));
}
flag=true;
}else if(e.getSource()==jbtnsqrt){
String s=t.getText().trim();
double d=Math.sqrt(Double.parseDouble(s));
t.setText(String.valueOf(d));
}
else {
if(flag){
t.setText(“”);
}
// 不点击=和C时,将字符串追加在文本域中
t.append(e.getActionCommand());
flag=false;
}
}
public static void main(String[] args) {
new calculator().init();
}
}
添加了开平方功能
修改了第二次计算时不清楚原来记录