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

泛旅传媒 2023-01-15 07:54 编辑:admin 223阅读

//百度文库找的,可费了我的财富值了,你可要把分给我呀。

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){}

}

简单的计算器...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() ;

}

}