用JAVA编写一个图形应用程序,可以是一个简单的文本编辑器、计算器等等。 求完整代码

 我来答
百度网友8c2fbc6
2012-05-10 · TA获得超过955个赞
知道小有建树答主
回答量:878
采纳率:0%
帮助的人:296万
展开全部
//百度文库找的,可费了我的财富值了,你可要把分给我呀。
package lee;
/*文件名:Calculator.java

*说明:简易科学计算器
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Calculator extends Frame implements ActionListener, WindowListener
{
private Container container;
private GridBagLayout layout;
private GridBagConstraints constraints;
private JTextField displayField; //计算结果显示区
private String lastCommand; //保存+,-,*,/,=命令0
private double result; //保存计算结果
private boolean start; //判断是否为数字的开始
private JMenuBar menubar;
private JMenuItem m_exit,m2_ejz,m2_bjz;
private Dialog dialog;
private Label label_dialog;
private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,
button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0,
button_plus,button_minus,button_multiply,button_divide,button_point,
button_equal,button_log,button_tan,button_cos,button_sin,button_exp;

public Calculator() //构造方法设置布局、为按钮注册事件监听器
{
super("Calculator");
this.setLocation(240,200);
this.setSize(350,300);
this.setResizable(true);
this.setLayout(new GridLayout(7,1));
this.addmyMenu(); //调用成员方法添加菜单
displayField=new JTextField(30);
this.add(displayField);
displayField.setEditable(true);

start=true;
result=0;
lastCommand = "=";

JPanel panel0=new JPanel();
panel0.setLayout(new GridLayout(1,4,4,4));

JPanel panel1=new JPanel();
panel1.setLayout(new GridLayout(1,5,4,4));
this.add(panel1);
button_sqrt=new JButton("sqrt");
button_plusminus=new JButton("+/-");
button_exp=new JButton("exp");
button_CE=new JButton("退格");
button_cancel=new JButton("C");

JPanel panel2=new JPanel();
panel2.setLayout(new GridLayout(1,5,4,4));
this.add(panel2);
button_7=new JButton("7");
button_8=new JButton("8");
button_9=new JButton("9");
button_log=new JButton("log");
button_divide=new JButton("/");

JPanel panel3=new JPanel();
panel3.setLayout(new GridLayout(1,5,4,4));
this.add(panel3);
button_4=new JButton("4");
button_5=new JButton("5");
button_6=new JButton("6");
button_tan=new JButton("tan");
button_multiply=new JButton("*");

JPanel panel4=new JPanel();
panel4.setLayout(new GridLayout(1,5,4,4));
this.add(panel4);
button_1=new JButton("1");
button_2=new JButton("2");
button_3=new JButton("3");
button_cos=new JButton("cos");
button_minus=new JButton("-");

JPanel panel5=new JPanel();
panel5.setLayout(new GridLayout(1,5,4,4));
this.add(panel5);
button_0=new JButton("0");
button_point=new JButton(".");
button_equal=new JButton("=");
button_sin=new JButton("sin");
button_plus=new JButton("+");

panel1.add(button_sqrt);
panel1.add(button_plusminus);
panel1.add(button_exp);
panel1.add(button_CE);
panel1.add(button_cancel);
panel2.add(button_7);
panel2.add(button_8);
panel2.add(button_9);
panel2.add(button_log);
panel2.add(button_divide);
panel3.add(button_4);
panel3.add(button_5);
panel3.add(button_6);
panel3.add(button_tan);
panel3.add(button_multiply);
panel4.add(button_1);
panel4.add(button_2);
panel4.add(button_3);
panel4.add(button_cos);
panel4.add(button_minus);
panel5.add(button_0);
panel5.add(button_point);
panel5.add(button_equal);
panel5.add(button_sin);
panel5.add(button_plus);

button_sqrt.addActionListener(this);
button_plusminus.addActionListener(this);
button_exp.addActionListener(this);
button_CE.addActionListener(this);
button_cancel.addActionListener(this);
button_7.addActionListener(this);
button_8.addActionListener(this);
button_9.addActionListener(this);
button_log.addActionListener(this);
button_divide.addActionListener(this);
button_4.addActionListener(this);
button_5.addActionListener(this);
button_6.addActionListener(this);
button_tan.addActionListener(this);
button_multiply.addActionListener(this);
button_1.addActionListener(this);
button_2.addActionListener(this);
button_3.addActionListener(this);
button_cos.addActionListener(this);
button_minus.addActionListener(this);
button_0.addActionListener(this);
button_point.addActionListener(this);
button_equal.addActionListener(this);
button_sin.addActionListener(this);
button_plus.addActionListener(this);

this.addWindowListener(new WinClose()); //注册窗口监听器
this.setVisible(true);
}

private void addmyMenu() //菜单的添加
{
JMenuBar menubar=new JMenuBar();
this.add(menubar);
JMenu m1=new JMenu("选项");
JMenu m2=new JMenu("进制转换");
JMenuItem m1_exit=new JMenuItem("退出");
m1_exit.addActionListener(this);
JMenuItem m2_ejz=new JMenuItem("二进制");
m2_ejz.addActionListener(this);
JMenuItem m2_bjz=new JMenuItem("八进制");
m2_bjz.addActionListener(this);
JMenu m3 = new JMenu(" 帮助");
JMenuItem m3_Help = new JMenuItem("用法");
m3_Help.addActionListener(this);

dialog = new Dialog(this,"提示",true); //模式窗口
dialog.setSize(240,80);
label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐
dialog.add(label_dialog);
dialog.addWindowListener(this); //为对话框注册窗口事件监听器

m1.add(m1_exit);
menubar.add(m1);
m2.add(m2_ejz);
m2.add(m2_bjz);
menubar.add(m2);
m3.add(m3_Help);
menubar.add(m3); }

public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法
{
if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||
e.getSource().equals(button_3)||e.getSource().equals(button_4)||
e.getSource().equals(button_5)|| e.getSource().equals(button_6)||
e.getSource().equals(button_7)|| e.getSource().equals(button_8)||
e.getSource().equals(button_9) ||e.getSource().equals(button_0)||
e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)||
e.getSource().equals(button_cancel)||e.getSource().equals(button_CE))
{ //非运算符的处理方法
String input=e.getActionCommand();

if (start)
{
displayField.setText("");
start=false;
if(input.equals("+/-"))
displayField.setText(displayField.getText()+"-");
}
if(!input.equals("+/-"))
{
String str=displayField.getText();
if(input.equals("退格")) //退格键的实现方法
{
if(str.length()>0)
displayField.setText(str.substring(0,str.length()-1));
}
else if(input.equals("C")) //清零键的实现方法
{
displayField.setText("0");
start=true;
}
else
displayField.setText(displayField.getText()+input);
}
}
else if (e.getActionCommand()=="二进制") //二进制的转换
{
int n=Integer.parseInt(displayField.getText());
displayField.setText(Integer.toBinaryString(n));
}
else if (e.getActionCommand()=="八进制") //八进制的转换
{
int n=Integer.parseInt(displayField.getText());
displayField.setText(Integer.toOctalString(n));
}
else if (e.getActionCommand()=="退出") //选项中退出的处理方法
{
System.exit(0);
}
else if (e.getActionCommand()=="用法") //按下'帮助'菜单栏中用法的处理方法
{
label_dialog.setText("sqrt,exp等键是先输运算符再输数字\n");
dialog.setLocation(400,250);
dialog.setVisible(true);
}
else //各运算符的识别
{
String command=e.getActionCommand();
if(start)
{
lastCommand=command;
}
else
{
calculate(Double.parseDouble(displayField.getText()));
lastCommand=command;
start=true;
}
}
}

public void calculate(double x) //各运算符的具体运算方法
{
double d=0;
if (lastCommand.equals("+"))
result+= x;
else if (lastCommand.equals("-"))
result-=x;
else if (lastCommand.equals("*"))
result*=x;
else if (lastCommand.equals("/"))
result/=x;
else if (lastCommand.equals("="))
result=x;
else if (lastCommand.equals("sqrt"))
{
d=Math.sqrt(x);
result=d;
}
else if (lastCommand.equals("exp"))
{
d=Math.exp(x);
result=d;
}
else if (lastCommand.equals("log"))
{
d=Math.log(x);
result=d;
}
else if (lastCommand.equals("tan"))
{
d=Math.tan(x);
result=d;
}
else if (lastCommand.equals("cos"))
{
d=Math.cos(x);
result=d;
}
else if (lastCommand.equals("sin"))
{
d=Math.sin(x);
result=d;
}
displayField.setText(""+ result);
}

public void windowClosing(WindowEvent e)
{
if(e.getSource()==dialog)
dialog.setVisible(false); //隐藏对话框
else
System.exit(0);
}

public void windowOpened(WindowEvent e) { }
public void windowActivated(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }

public static void main(String args[])
{
Calculator calculator=new Calculator();
}
}

class WinClose implements WindowListener
{
public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法
{
System.exit(0); //结束程序运行
}
public void windowOpened(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
}
rulkylove
2012-05-11 · 超过26用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:54.6万
展开全部
简单的计算器...C按钮没做 其他的凑合吧 自己看要怎么改在去改改

package test;
import java.awt.*;
import java.math.BigDecimal ;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.* ;

public class TestCalculator implements ActionListener{

private boolean append = false ;
JTextField jtf = new JTextField(10) ;
JButton[] jb = new JButton[20] ;
private String operator = "+" ;
private String op1 = "0" ;
public TestCalculator()
{

JFrame jf = new JFrame("TestJPanel") ;
JPanel jp = new JPanel() ;

jp.setLayout(new GridLayout(5,4)) ;
String[] str ={"Back","CE","C","+","7","8","9","-","4","5","6","*","1","2","3","/","0",".","+/-","="} ;
jf.add(jtf,BorderLayout.NORTH) ;
for(int i=0;i<jb.length;i++)
{
jb[i] = new JButton(str[i]) ;
jp.add(jb[i]) ;
jb[i].addActionListener(this) ;
}
jf.add(jp) ;
jf.setSize(400,400) ;
jf.setVisible(true) ;
jf.setLocation(300,100) ;
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
}
StringBuffer sb1 = new StringBuffer() ;
StringBuffer sb2 = new StringBuffer() ;

public void actionPerformed(ActionEvent ae)
{
String comm = ae.getActionCommand() ;
if("0123456789".indexOf(comm)!=-1)
{
if(append) //追加
{
String temp = jtf.getText() ;
jtf.setText(temp+comm) ;
}else //替换
{
jtf.setText(comm) ;
append = true ;
}
}else if("+-*/".indexOf(comm)!=-1)
{
op1 = jtf.getText() ;
operator = comm ;
append = false ;
}else if("=".equals(comm))
{
String op2 = jtf.getText() ;
BigDecimal d1 = new BigDecimal(op1) ;
BigDecimal d2 = new BigDecimal(op2) ;
if("+".equals(operator))
{
d1 = d1.add(d2) ;
}else if("-".equals(operator))
{
d1 = d1.subtract(d2);
}else if("*".equals(operator))
{
d1 = d1.multiply(d2) ;
}else
{
d1 = d1.divide(d2,10,BigDecimal.ROUND_HALF_UP) ;
}
jtf.setText(d1.toString()) ;
append = false ;
}else if(".".equals(comm))
{
String temp = jtf.getText() ;
if(temp.indexOf(comm)==-1) //没有找到
{
jtf.setText(temp+".") ;
append = true ;
}
}else if("+/-".equals(comm))
{
String temp = jtf.getText() ;
if(temp.startsWith("-"))
{
jtf.setText(temp.substring(1)) ;
}else
{
jtf.setText("-"+temp) ;
}
}else if("Back".equals(comm))
{
String temp = jtf.getText() ;
if(temp.length()>0)
{
jtf.setText(temp.substring(0,temp.length()-1)) ;
}
}else if("CE".equals(comm))
{
jtf.setText("0") ;
}
}
public static void main(String[] args)
{
new TestCalculator() ;
}
}
追问
非常感谢你的回答,但能不能在关键语句的后面添加一些注释语句,方便我学习,本人基础较差
追答
回答字数限制  只写监听事件
public void actionPerformed(ActionEvent ae)//监听事件处理
{
String comm = ae.getActionCommand() ;
if("0123456789".indexOf(comm)!=-1)//判断是不是数字
{
if(append) //追加
{
String temp = jtf.getText() ;
jtf.setText(temp+comm) ;
}else //替换
{
jtf.setText(comm) ;
append = true ; //替换后将标记更改为 追加
}
}else if("+-*/".indexOf(comm)!=-1)//判断是不是运算符
{
op1 = jtf.getText() ;
operator = comm ;
append = false ;//输完运算符后 文本框准备输入下一个数 设置标记为替换
}else if("=".equals(comm))
{
String op2 = jtf.getText() ;
//将数字字符串转换为大数
BigDecimal d1 = new BigDecimal(op1) ;
BigDecimal d2 = new BigDecimal(op2) ;
//以下根据运算符进行运算
/**此处删了点
*自己对照前面的
*代码太长了*/
}else if(".".equals(comm))//判断输入的是否是小数点
{
String temp = jtf.getText() ;
if(temp.indexOf(comm)==-1) //查找是否存在小数点 没有找到才执行下列语句否则什么也不做
{
jtf.setText(temp+".") ;
append = true ;
}
}else if("+/-".equals(comm))//判断输入的是否是正负号 是就执行以下语句
{
String temp = jtf.getText() ;
if(temp.startsWith("-"))//如果文本框里的数是以符号开头
{
jtf.setText(temp.substring(1)) ;//去掉第一个字符 也就是去掉负号
}else //如果不是以负号开头
{
jtf.setText("-"+temp) ;//在最前面加上负号
}
}else if("Back".equals(comm))
{
String temp = jtf.getText() ;
if(temp.length()>0)//如果显示框内有数字或符号每次退一格
{
jtf.setText(temp.substring(0,temp.length()-1)) ;
}
}else if("CE".equals(comm))//清除 显示框设置为初始值0
{
jtf.setText("0") ;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式