📄 接近(计算).java
字号:
import java.awt.*;
import java.awt.event.*;
import java.lang.Math.*;
class Calculator implements ItemListener,ActionListener{
Frame f;
MenuBar mb;
Menu m1,m2,m3;
TextField tf1,tf2;
Panel p0,p1,p2,p3,p4;
Button b[]=new Button[28];
String s1,s2,s3;
static int n=0;
public void display(){
f=new Frame("计算器");
mb=new MenuBar(); //建立菜单栏mb
f.setMenuBar(mb); //添加菜单栏mb
m1=new Menu("编辑(E)"); //建立下拉菜单m1
MenuItem mi1 = new MenuItem("复制(C)",new MenuShortcut(KeyEvent.VK_C));//建立菜单项mi1,并建立快捷键
m1.add(mi1); //添加菜单项mi1
MenuItem mi2 = new MenuItem("粘贴(P)",new MenuShortcut(KeyEvent.VK_V));//下边同上
m1.add(mi2);
m1.addActionListener(this); //添加监听器
mb.add(m1);
m2=new Menu("查看(V)");
CheckboxMenuItem cm1=new CheckboxMenuItem("标准型(T)");//建立复选框
cm1.addItemListener(this);
CheckboxMenuItem cm2=new CheckboxMenuItem("科学型(S)");
cm2.addItemListener(this);
m2.add(cm1);
m2.add(cm2);
m2.addSeparator();
m2.add(new MenuItem("数学分组(I)"));
m2.addActionListener(this);
mb.add(m2);
m3=new Menu("帮助(H)");
m3.add(new MenuItem("帮助主题(H)"));
m3.addSeparator();
m3.add(new MenuItem("关于计算器(A)"));
m3.addActionListener(this);
mb.setHelpMenu(m3); //将m3制定为帮助菜单并添加到mb上
p0=new Panel(); //建立面板
p1=new Panel();
p2=new Panel();
p3=new Panel();
p4=new Panel();
f.setSize(260,250); //设置frame的大小
f.setLocation(200,100); //设置frame的位置
f.setBackground(Color.LIGHT_GRAY); //设置背景颜色
p0.setLayout(new BorderLayout()); //设置p0的布局管理器为BorderLayout,p0用来放文本框和前四个按钮;
tf1=new TextField(30); //创建文本区
tf1.setEditable(false); //调用函数指定文本区不可编辑
tf2=new TextField();
tf2.setBackground(Color.LIGHT_GRAY);
p0.add(tf1,"North"); //将tf1放置在p0的北部
p1.setLayout(new FlowLayout(FlowLayout.RIGHT));
p1.add(tf2);
p1.add(p2);
b[1]=new Button("Backspace");
b[2]=new Button(" CE ");
b[3]=new Button(" C ");
for(int i=1;i<4;i++){ //添加按钮
p2.add(b[i]);
}
p0.add(p1,"Center");
f.add(p0,"North"); //把p0放在f的北部;
p3.setLayout(new GridLayout(4,1,6,6));
b[4]=new Button("MC");
b[5]=new Button("MR");
b[6]=new Button("MS");
b[7]=new Button("M+");
for(int i=4;i<8;i++){
p3.add(b[i]);
}
f.add(p3,"West");
p4.setLayout(new GridLayout(4,5,6,5));
b[8]=new Button("7");
b[9]=new Button("8");
b[10]=new Button("9");
b[11]=new Button("/");
b[12]=new Button("sprt");
b[13]=new Button("4");
b[14]=new Button("5");
b[15]=new Button("6");
b[16]=new Button("*");
b[17]=new Button("%");
b[18]=new Button("1");
b[19]=new Button("2");
b[20]=new Button("3");
b[21]=new Button("-");
b[22]=new Button("1/x");
b[23]=new Button("0");
b[24]=new Button("+/-");
b[25]=new Button(".");
b[26]=new Button("+");
b[27]=new Button("=");
for(int i=8;i<28;i++){
p4.add(b[i]);
}
f.add(p4,"East");
for(int i=1;i<28;i++){ //为每个按钮添加监听器
b[i].addActionListener(this);
}
f.pack();
f.addWindowListener(new WinClose()); //关闭窗口的监听器
f.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand()=="编辑(E)"||e.getActionCommand()=="查看(V)"||e.getActionCommand()=="帮助(H)"){
tf1.setText(e.getActionCommand());
}
if(e.getActionCommand()=="Backspace"){
tf1.setText((tf1.getText()).substring(0,(tf1.getText()).length()-1));
}
if(e.getSource()==b[2]){ //获取产生事件的对象,b[2]为CE
//(e.getActionCommand()=="CE"){
tf1.setText("");
}
if(e.getActionCommand()=="0"||e.getActionCommand()=="1"||e.getActionCommand()=="2"||e.getActionCommand()=="3"||e.getActionCommand()=="4"
||e.getActionCommand()=="5"||e.getActionCommand()=="6"||e.getActionCommand()=="7"||e.getActionCommand()=="8"||e.getActionCommand()=="9"){
tf1.setText(tf1.getText()+e.getActionCommand());
}
if(e.getActionCommand()=="+/-"){
//e.getSource()=b[24]){
n++;
if(n%2!=0){
double d1,d;
s1=tf1.getText();
d1=(new Double(s1)).parseDouble(s1);
d=-d1;
tf1.setText(String.valueOf(d));
n++;
}
}
if(e.getSource()==b[22]){ //b[22]是1/x
double d1,d;
s1=tf1.getText();
d1=(new Double(s1)).parseDouble(s1);
d=1/d1;
tf1.setText(String.valueOf(d));
}
if(e.getSource()==b[12]){ //获取产生事件的对象,b[12]为sqrt
double d1,d;
s2=tf1.getText();
d1=(new Double(s2)).parseDouble(s2);
d=Math.sqrt(d1); //调用Math类的sqrt函数
tf1.setText(String.valueOf(d));
}
if(e.getActionCommand()=="."){
tf1.setText((tf1.getText()).concat("."));
}
if(e.getActionCommand()=="+"||e.getActionCommand()=="-"||e.getActionCommand()=="*"||e.getActionCommand()=="/"||e.getActionCommand()=="%"){
s1=tf1.getText();
s3=e.getActionCommand(); //把产生动作的按钮名字赋值给s3;
tf1.setText("");
}
if(e.getSource()==b[3]){ //b[3]为C
tf1.setText("");
s3="";
}
if(e.getSource()==b[17]){ //b[17]为%
// if(e.getActionCommand()=="%"){ //为什么不行
if(e.getActionCommand()=="="){
double d1,d2,d=0.0;
s2=tf1.getText();
d1=(new Double(s1)).parseDouble(s1);
d2=(new Double(s2)).parseDouble(s2);
d2=d2*0.01;
if(s3=="+"){
d=d1+d2;
}
if(s3=="-"){
d=d1-d2;
}
if(s3=="*"){
d=d1*d2;
}
if(s3=="/"){
d=d1/d2;
}
tf1.setText(String.valueOf(d));
}
}
if(s3=="+"){
if(e.getActionCommand()=="="){
double d1,d2,d;
s2=tf1.getText();
d1=(new Double(s1)).parseDouble(s1);
d2=(new Double(s2)).parseDouble(s2);
d=d1+d2;
tf1.setText(String.valueOf(d));
}
}
if(s3=="-"){
if(e.getActionCommand()=="="){
double d1,d2,d;
s2=tf1.getText();
d1=(new Double(s1)).parseDouble(s1);
d2=(new Double(s2)).parseDouble(s2);
d=d1-d2;
tf1.setText(String.valueOf(d));
}
}
if(s3=="*"){
if(e.getActionCommand()=="="){
double d1,d2,d;
s2=tf1.getText();
d1=(new Double(s1)).parseDouble(s1);
d2=(new Double(s2)).parseDouble(s2);
d=d1*d2;
tf1.setText(String.valueOf(d));
}
}
if(s3=="/"){
if(e.getActionCommand()=="="){
double d1,d2,d;
s2=tf1.getText();
d1=(new Double(s1)).parseDouble(s1);
d2=(new Double(s2)).parseDouble(s2);
d=d1/ d2;
tf1.setText(String.valueOf(d));
if(d2==0){
tf1.setText("除数为零 !");
}
}
}
}
public void itemStateChanged(ItemEvent e){
tf1.setText("ItemStateChanged");
}
public static void main(String args[]){
Calculator a=new Calculator();
a.display();
}
}
class WinClose extends WindowAdapter{ //定义一个类继承WindowAdapter关闭窗口
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -