基本信息
源码名称:java 实现 计算器简单功能
源码大小:7.66KB
文件格式:.zip
开发语言:Java
更新时间:2019-03-26
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyComputer extends JFrame implements ActionListener
{
JTextArea memoryArea=new JTextArea(" ",1,3);
JTextArea process=new JTextArea(" ",1,20);
JTextArea dispresult=new JTextArea("0. ",1,20);
Font font1=new Font("Vani",Font.BOLD,18 );
Font font2=new Font("Arial Rounded MT Bold",Font.PLAIN,10 );
Font font3=new Font("Arial Rounded MT Bold",Font.PLAIN,30 );
Font font4=new Font("Vani",Font.PLAIN,15);
JButton[]jbuttons=new JButton[32];
double result=0,first=0,second=0;
double memery=0;
char firstsymbol='\0',secondsymbol='\0';
boolean prev=true,repeat=true,dot=true;
MyComputer()
{
super("Calculator");
this.setTitle("计算器");
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e)
{
System.out.println(e);
}
JPanel resultField=new JPanel();
resultField.setLayout(new GridLayout(3,1));
JPanel buttonField=new JPanel();
Container all=getContentPane();
GridLayout grid1;
grid1=new GridLayout(8,4,0,0);
memoryArea.setFont(font3);
dispresult.setFont(font3);
process.setFont(font4);
memoryArea.setEditable(false);
process.setEditable(false);
dispresult.setEditable(false);
resultField.add(memoryArea);
resultField.add(process);
resultField.add(dispresult);
all.add(resultField,"North");
String[]buttonname={"MS","MC","MR","M ","1/x","x2","√","㏒","%","sin","cos","tan","CE","C","back","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="};
buttonField.setLayout(grid1);
//buttonField.setBackground(Color.LIGHT_GRAY);
for(int i=0;i<4;i )
{
for(int j=0;j<8;j )
{
jbuttons[i*8 j]=new JButton(buttonname[i*8 j]);
jbuttons[i*8 j].addActionListener(this);
//jbuttons[i*8 j].setBackground(Color.red);
buttonField.add(jbuttons[i*8 j]);
}
}
for(int j=0;j<4;j ){
jbuttons[j].setFont(font2);
//jbuttons[j].setBorderPainted(false);
jbuttons[j].setBackground(new Color(250,250,250));
//jbuttons[j].setPreferredSize(new Dimension(40,40));
// jbuttons[j].setBorder(BorderFactory.createRaisedBevelBorder());
}
for(int j=4;j<16;j ){
jbuttons[j].setFont(font4);
// jbuttons[j].setBorderPainted(false);
}
for(int j=16;j<32;j ){
jbuttons[j].setFont(font1);
//jbuttons[j].setBorderPainted(false);
}
jbuttons[15].setFont(font4);
jbuttons[19].setFont(font4);
all.add(buttonField,"Center");
setSize(422,405);
setResizable(true);
setVisible(true);
//this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void pressNumber(String n)
{
process.setText(process.getText() n);
if(prev)
{
dispresult.setText(n);
prev=false;
}
else dispresult.append(n);
}
public boolean divide(double d)
{
if(d==0)
{
dispresult.setText("除数不能为0!");
prev=true;
repeat=true;
firstsymbol='\0';
secondsymbol='\0';
return true;
}
return false;
}
public void actionPerformed(ActionEvent e)
{
Object source=e.getSource();
if(source==jbuttons[12])
{
dispresult.setText("0.");
dot=true;
prev=true;
repeat=true;
return;
}
if(source==jbuttons[13])
{
process.setText(null);
dispresult.setText("0.");
firstsymbol='\0';
secondsymbol='\0';
prev=true;
repeat=true;
dot=true;
return;
}
if(source==jbuttons[14]){
String text=process.getText();
int i=text.length();
if(i>0){
text=text.substring(0,i-1);
if(text.length()==0){
dispresult.setText("0.");
process.setText("");
firstsymbol='\0';
secondsymbol='\0';
first=second=0;
prev=true;
repeat=true;
dot=true;
}
else{
dispresult.setText(text);
process.setText(text);
}
}
}
if(source==jbuttons[1])
{
memery=0;
memoryArea.setText(" ");
prev=true;
repeat=false;
dot=true;
return;
}
if(source==jbuttons[29])
{
pressNumber("0");
repeat=false;
return;
}
if(source==jbuttons[24])
{
pressNumber("1");
repeat=false;
return;
}
if(source==jbuttons[25])
{
pressNumber("2");
repeat=false;
return;
}
if(source==jbuttons[4])
{
double temp=1/Double.parseDouble(dispresult.getText());
dispresult.setText(String.valueOf(temp));
prev=true;
repeat=false;
dot=true;
return;
}
if(source==jbuttons[5])
{
double temp=Double.parseDouble(dispresult.getText())*Double.parseDouble(dispresult.getText());
dispresult.setText(String.valueOf(temp));
prev=true;
repeat=false;
dot=true;
return;
}
if(source==jbuttons[6])
{
if(-Double.parseDouble(dispresult.getText())<0){
double temp=Math.sqrt(Double.parseDouble(dispresult.getText()));
dispresult.setText(String.valueOf(temp));
prev=true;
repeat=false;
dot=true;
return;
}else{
dispresult.setText("请输入有效数字");
}
}
if(source==jbuttons[7])
{
if(-Double.parseDouble(dispresult.getText())<0){
double temp=Math.log10(Double.parseDouble(dispresult.getText()));
dispresult.setText(String.valueOf(temp));
prev=true;
repeat=false;
dot=true;
return;
}else{
dispresult.setText("请输入有效数字");
}
}
if(source==jbuttons[8])
{
double temp=Double.parseDouble(dispresult.getText())/100;
dispresult.setText(String.valueOf(temp));
prev=true;
repeat=false;
dot=true;
return;
}
if(source==jbuttons[9])
{
double temp=Math.sin(Double.parseDouble(dispresult.getText()));
dispresult.setText(String.valueOf(temp));
prev=true;
repeat=false;
dot=true;
return;
}
if(source==jbuttons[10])
{
double temp=Math.cos(Double.parseDouble(dispresult.getText()));
dispresult.setText(String.valueOf(temp));
prev=true;
repeat=false;
dot=true;
return;
}
if(source==jbuttons[2])
{
if(memoryArea.getText().equals(" M "))
dispresult.setText(String.valueOf(memery));
prev=true;
repeat=false;
dot=true;
return;
}
if(source==jbuttons[26])
{
pressNumber("3");
repeat=false;
return;
}
if(source==jbuttons[20])
{
pressNumber("4");
repeat=false;
return;
}
if(source==jbuttons[21])
{
pressNumber("5");
repeat=false;
return;
}
if(source==jbuttons[11])
{
double temp=Math.tan(Double.parseDouble(dispresult.getText()));
dispresult.setText(String.valueOf(temp));
prev=true;
repeat=false;
dot=true;
return;
}
if(source==jbuttons[0])
{
memery=Double.parseDouble(dispresult.getText());
if(memery!=0)memoryArea.setText("M");
prev=true;
repeat=false;
dot=true;
return;
}
if(source==jbuttons[22])
{
pressNumber("6");
repeat=false;
return;
}
if(source==jbuttons[16])
{ pressNumber("7");
repeat=false;
return;
}
if(source==jbuttons[17])
{ pressNumber("8");
repeat=false;
return;}
if(source==jbuttons[28])
{ double temp=-Double.parseDouble(dispresult.getText());
dispresult.setText(String.valueOf(temp));
prev=true;
repeat=false;
dot=true;
return;}
if(source==jbuttons[3])
{ memery =-Double.parseDouble(dispresult.getText());
if(memery!=0) memoryArea.setText("M");
prev=true;
repeat=false;
dot=true;
return;}
if(source==jbuttons[18])
{ pressNumber("9");
repeat=false;
return;
}
if(source==jbuttons[30])
{ if(dot){
pressNumber(".");
dot=false;
repeat=false;
}
return;
}
if(source==jbuttons[31])
{
second=Double.parseDouble(dispresult.getText());
dot=true;
switch(secondsymbol)
{
case'*':
second*=first;
break;
case'/':
if(divide(second)) return;
second=first/second;
}//end of switch(secondsymbol)
secondsymbol='\0';
switch(firstsymbol)
{
case' ':
result =second;
break;
case'-':
result-=second;
break;
case'*':
result*=second;
dispresult.setText(String.valueOf(result));
break;
case'/':
if(divide(second)) return;
result/=second;
}//end of switch(firstsymbol)
if(firstsymbol!='\0') dispresult.setText(String.valueOf(result));
firstsymbol='\0';
prev=true;
repeat=false;
return;
}
if(source==jbuttons[27])
{
process.setText(process.getText() " ");
dot=true;
if(repeat){
firstsymbol=' ';
return;
}
second=Double.parseDouble(dispresult.getText());
switch(secondsymbol){
case'*':
second*=first;
break;
case'/':
if(divide(second))return;
second=first/second;
}//end of switch(secondsymbol)
secondsymbol='\0';
switch(firstsymbol){
case'\0':
result=second;
firstsymbol=' ';
break;
case' ':
result =second;
dispresult.setText(String.valueOf(result));
break;
case'-':
result-=second;
firstsymbol=' ';
dispresult.setText(String.valueOf(result));
break;
case'*':
result*=second;
firstsymbol=' ';
dispresult.setText(String.valueOf(result));
break;
case'/':
if(divide(second))return;
result/=second;
firstsymbol=' ';
dispresult.setText(String.valueOf(result));
}//end of switch(firstsymbol)
prev=true;
repeat=true;
return;
}
if(source==jbuttons[23])
{
process.setText(process.getText() "-");
dot=true;
if(repeat){
firstsymbol='-';
return;
}
second=Double.parseDouble(dispresult.getText());
switch(secondsymbol){
case'*':
second*=first;
break;
case'/':
if(divide(second))return;
second=first/second;
}
secondsymbol='\0';
switch(firstsymbol){
case'\0':
result=second;
firstsymbol='-';
break;
case' ':
result=second;
firstsymbol='-';
dispresult.setText(String.valueOf(result));
break;
case'-':
result-=second;
dispresult.setText(String.valueOf(result));
break;
case'*':
result*=second;
firstsymbol='-';
dispresult.setText(String.valueOf(result));
break;
case'/':
if(divide(second))return;
result/=second;
firstsymbol='-';
dispresult.setText(String.valueOf(result));
}
prev=true;
repeat=true;
return;
}
if(source==jbuttons[19])
{
process.setText(process.getText() "*");
dot=true;
if(repeat){
if(secondsymbol=='\0')firstsymbol='*';
else secondsymbol='*';
return;
}
second=Double.parseDouble(dispresult.getText());
switch(secondsymbol){
case'\0':
switch(firstsymbol){
case'\0':
firstsymbol='*';
result=second;
break;
case' ':
case'-':
first=second;
secondsymbol='*';
break;
case'*':
result*=second;
dispresult.setText(String.valueOf(result));
break;
case'/':
if(divide(second))return;
result/=second;
dispresult.setText(String.valueOf(result));
firstsymbol='*';
}
break;
case'*':
first*=second;
dispresult.setText(String.valueOf(first));
break;
case'/':
if(divide(second))return;
first/=second;
secondsymbol='*';
dispresult.setText(String.valueOf(first));
}
prev=true;
repeat=true;
return;
}
if(source==jbuttons[15])
{
process.setText(process.getText() "/");
dot=true;
if(repeat){
if(secondsymbol=='\0')firstsymbol='/';
else secondsymbol='/';
return;
}
second=Double.parseDouble(dispresult.getText());
switch(secondsymbol){
case'\0':
switch(firstsymbol){
case'\0':
firstsymbol='/';
result=second;
break;
case' ':
case'-':
first=second;
secondsymbol='/';
break;
case'*':
result*=second;
firstsymbol='/';
dispresult.setText(String.valueOf(result));
break;
case'/':
if(divide(second))return;
result/=second;
dispresult.setText(String.valueOf(result));
}//end of switch(firstsymbol)
break;
case'*':
first*=second;
secondsymbol='/';
dispresult.setText(String.valueOf(first));
break;
case'/':
if(divide(second))return;
first/=second;
dispresult.setText(String.valueOf(first));
}//end of switch(firstsymbol)
prev=true;
repeat=true;
return;
}
}
public static void main(String args[])
{
MyComputer mc=new MyComputer();
}
}