📄 computerpad.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.LinkedList;
import java.text.NumberFormat;
import java.io.*;
import java.applet.*;
import java.net.*;
public class ComputerPad extends Frame implements ActionListener
{
FileDialog filedialog_save,filedialog_load;
NumberButton numberButton[];
OperationButton oprationButton[];
MenuBar bar;
Menu fMenu;
MenuItem 保存;
TextArea text;
BufferedReader in;
FileReader file_reader;
BufferedWriter out;
FileWriter tofile;
Button 小数点按钮,正负号按钮,退格按钮,
求倒数按钮,等号按钮,清零按钮,
sin按钮,log按钮,平方按钮,tan按钮;
AudioClip clip1,clip2,clip3,clip4,
clip5,clip6,clip7,clip8,
clip9,clip0,clipjia,clipjian,
clipcg,clipcu,clipdeng,clipdian,
cliptui,clipfu,clipdao,clipzheng,
clipdui,clipqie,clipkai,clipqing;
URL url1,url2,url3,url4,
url5,url6,url7,url8,
url9,url0,urljia,urljian,
urlcg,urlcu,urldeng,urldian,urltui,
urlfu,urldao,urlzheng,urldui,
urlqie,urlkai,urlqing;
File voiceFile1=new File("1.wav");
File voiceFile2=new File("2.wav");
File voiceFile3=new File("3.wav");
File voiceFile4=new File("4.wav");
File voiceFile5=new File("5.wav");
File voiceFile6=new File("6.wav");
File voiceFile7=new File("7.wav");
File voiceFile8=new File("8.wav");
File voiceFile9=new File("9.wav");
File voiceFile0=new File("0.wav");
File voiceFilejia=new File("jia.wav");
File voiceFilejian=new File("jian.wav");
File voiceFilecg=new File("cg.wav");
File voiceFilecu=new File("cu.wav");
File voiceFiledeng=new File("deng.wav");
File voiceFiledian=new File("dian.wav");
File voiceFiletui=new File("tui.wav");
File voiceFilefu=new File("fu.wav");
File voiceFiledao=new File("dao.wav");
File voiceFilezheng=new File("zheng.wav");
File voiceFiledui=new File("dui.wav");
File voiceFileqie=new File("qie.wav");
File voiceFilekai=new File("kai.wav");
File voiceFileqing=new File("qing.wav");
Panel panel;
JTextField resultShow;
String 运算符号[]={"+","-","*","/"};
JFileChooser fileChooser=null;
LinkedList 链表;
boolean 是否按下等号=false;
public ComputerPad()
{
super("计算器");
try
{
url1=voiceFile1.toURL();
clip1=Applet.newAudioClip(url1);
}
catch(Exception ee)
{
}
try
{
url2=voiceFile2.toURL();
clip2=Applet.newAudioClip(url2);
}
catch(Exception ee)
{
}
try
{
url3=voiceFile3.toURL();
clip3=Applet.newAudioClip(url3);
}
catch(Exception ee)
{
}
try
{
url4=voiceFile4.toURL();
clip4=Applet.newAudioClip(url4);
}
catch(Exception ee)
{
}
try
{
url5=voiceFile5.toURL();
clip5=Applet.newAudioClip(url5);
}
catch(Exception ee)
{
}
try
{
url6=voiceFile6.toURL();
clip6=Applet.newAudioClip(url6);
}
catch(Exception ee)
{
}
try
{
url7=voiceFile7.toURL();
clip7=Applet.newAudioClip(url7);
}
catch(Exception ee)
{
}
try
{
url8=voiceFile8.toURL();
clip8=Applet.newAudioClip(url8);
}
catch(Exception ee)
{
}
try
{
url9=voiceFile9.toURL();
clip9=Applet.newAudioClip(url9);
}
catch(Exception ee)
{
}
try
{
url0=voiceFile0.toURL();
clip0=Applet.newAudioClip(url0);
}
catch(Exception ee)
{
}
try
{
urljia=voiceFilejia.toURL();
clipjia=Applet.newAudioClip(urljia);
}
catch(Exception ee)
{
}
try
{
urljian=voiceFilejian.toURL();
clipjian=Applet.newAudioClip(urljian);
}
catch(Exception ee)
{
}
try
{
urlcg=voiceFilecg.toURL();
clipcg=Applet.newAudioClip(urlcg);
}
catch(Exception ee)
{
}
try
{
urlcu=voiceFilecu.toURL();
clipcu=Applet.newAudioClip(urlcu);
}
catch(Exception ee)
{
}
try
{
urldeng=voiceFiledeng.toURL();
clipdeng=Applet.newAudioClip(urldeng);
}
catch(Exception ee)
{
}
try
{
urldian=voiceFiledian.toURL();
clipdian=Applet.newAudioClip(urldian);
}
catch(Exception ee)
{
}
try
{
urltui=voiceFiletui.toURL();
cliptui=Applet.newAudioClip(urltui);
}
catch(Exception ee)
{
}
try
{
urldao=voiceFiledao.toURL();
clipdao=Applet.newAudioClip(urldao);
}
catch(Exception ee)
{
}
try
{
urlfu=voiceFilefu.toURL();
clipfu=Applet.newAudioClip(urlfu);
}
catch(Exception ee)
{
}
try
{
urlzheng=voiceFilezheng.toURL();
clipzheng=Applet.newAudioClip(urlzheng);
}
catch(Exception ee)
{
}
try
{
urldui=voiceFiledui.toURL();
clipdui=Applet.newAudioClip(urldui);
}
catch(Exception ee)
{
}
try
{
urlqie=voiceFileqie.toURL();
clipqie=Applet.newAudioClip(urlqie);
}
catch(Exception ee)
{
}
try
{
urlkai=voiceFilekai.toURL();
clipkai=Applet.newAudioClip(urlkai);
}
catch(Exception ee)
{
}
try
{
urlqing=voiceFileqing.toURL();
clipqing=Applet.newAudioClip(urlqing);
}
catch(Exception ee)
{
}
bar=new MenuBar();
fMenu=new Menu("编辑");
保存=new MenuItem("保存");
fMenu.add(保存);
bar.add(fMenu);
setMenuBar(bar);
filedialog_save=new FileDialog(this,"保存运算过程",FileDialog.SAVE);
保存.addActionListener(this);
filedialog_save.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{ filedialog_save.setVisible(false);
}
});
链表=new LinkedList();
numberButton=new NumberButton[10];
for(int i=0;i<=9;i++)
{
numberButton[i]=new NumberButton(i);
numberButton[i].addActionListener(this);
}
oprationButton=new OperationButton[4];
for(int i=0;i<4;i++)
{
oprationButton[i]=new OperationButton(运算符号[i]);
oprationButton[i].addActionListener(this);
}
小数点按钮=new Button(".");
正负号按钮 =new Button("+/-");
等号按钮=new Button("=");
求倒数按钮=new Button("1/x");
退格按钮=new Button("退格");
清零按钮=new Button("C");
sin按钮=new Button("sin");
log按钮=new Button("log");
tan按钮=new Button("tan");
平方按钮=new Button("sqrt");
清零按钮.setForeground(Color.red);
退格按钮.setForeground(Color.red);
等号按钮.setForeground(Color.red);
求倒数按钮.setForeground(Color.blue);
正负号按钮.setForeground(Color.blue);
小数点按钮.setForeground(Color.blue);
sin按钮.setForeground(Color.blue);
log按钮.setForeground(Color.blue);
tan按钮.setForeground(Color.blue);
平方按钮.setForeground(Color.blue);
退格按钮.addActionListener(this);
清零按钮.addActionListener(this);
等号按钮.addActionListener(this);
小数点按钮.addActionListener(this);
正负号按钮.addActionListener(this);
求倒数按钮.addActionListener(this);
sin按钮.addActionListener(this);
log按钮.addActionListener(this);
tan按钮.addActionListener(this);
平方按钮.addActionListener(this);
resultShow=new JTextField(10);
resultShow.setHorizontalAlignment(JTextField.RIGHT);
resultShow.setForeground(Color.blue);
resultShow.setFont(new Font("TimesRoman",Font.PLAIN,14));
resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
resultShow.setBackground(Color.white);
resultShow.setEditable(false);
panel=new Panel();
panel.setLayout(new GridLayout(4,5));
panel.add(numberButton[1]);
panel.add(numberButton[2]);
panel.add(numberButton[3]);
panel.add(oprationButton[0]);
panel.add(清零按钮);
panel.add(sin按钮);
panel.add(numberButton[4]);
panel.add(numberButton[5]);
panel.add(numberButton[6]);
panel.add(oprationButton[1]);
panel.add(退格按钮);
panel.add(log按钮);
panel.add(numberButton[7]);
panel.add(numberButton[8]);
panel.add(numberButton[9]);
panel.add(oprationButton[2]);
panel.add(求倒数按钮);
panel.add(tan按钮);
panel.add(numberButton[0]);
panel.add(正负号按钮);
panel.add(小数点按钮);
panel.add(oprationButton[3]);
panel.add(等号按钮);
panel.add(平方按钮);
add(panel,BorderLayout.CENTER);
add(resultShow,BorderLayout.NORTH);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setVisible(true);
setBounds(100,50,240,180);
setResizable(false);
validate();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() instanceof NumberButton)
{
NumberButton b=(NumberButton)e.getSource();
if(链表.size()==0)
{
int number=b.getNumber();
if (number==1)
{
clip1.play();
}
else if (number==2)
{
clip2.play();
}
else if (number==3)
{
clip3.play();
}
else if (number==4)
{
clip4.play();
}
else if (number==5)
{
clip5.play();
}
else if (number==6)
{
clip6.play();
}
else if (number==7)
{
clip7.play();
}
else if (number==8)
{
clip8.play();
}
else if (number==9)
{
clip9.play();
}
else if (number==0)
{
clip0.play();
}
链表.add(""+number);
resultShow.setText(""+number);
是否按下等号=false;
}
else if(链表.size()==1&&是否按下等号==false)
{
int number=b.getNumber();
if (number==1)
{
clip1.play();
}
else if (number==2)
{
clip2.play();
}
else if (number==3)
{
clip3.play();
}
else if (number==4)
{
clip4.play();
}
else if (number==5)
{
clip5.play();
}
else if (number==6)
{
clip6.play();
}
else if (number==7)
{
clip7.play();
}
else if (number==8)
{
clip8.play();
}
else if (number==9)
{
clip9.play();
}
else if (number==0)
{
clip0.play();
}
String num=(String)链表.getFirst();
String s=num.concat(""+number);
链表.set(0,s);
resultShow.setText(s);
}
else if(链表.size()==1&&是否按下等号==true)
{
int number=b.getNumber();
if (number==1)
{
clip1.play();
}
else if (number==2)
{
clip2.play();
}
else if (number==3)
{
clip3.play();
}
else if (number==4)
{
clip4.play();
}
else if (number==5)
{
clip5.play();
}
else if (number==6)
{
clip6.play();
}
else if (number==7)
{
clip7.play();
}
else if (number==8)
{
clip8.play();
}
else if (number==9)
{
clip9.play();
}
else if (number==0)
{
clip0.play();
}
链表.removeFirst();
链表.add(""+number);
是否按下等号=false;
resultShow.setText(""+number);
}
else if(链表.size()==2)
{
int number=b.getNumber();
if (number==1)
{
clip1.play();
}
else if (number==2)
{
clip2.play();
}
else if (number==3)
{
clip3.play();
}
else if (number==4)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -