zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java swing实现的计算器详解编程语言

JAVA编程语言 实现 详解 计算器 swing
2023-06-13 09:20:29 时间

java swing实现的计算器详解编程语言

 

import java.awt.Color; 

import java.awt.Dimension; 

import java.awt.Font; 

import java.awt.Rectangle; 

import java.awt.event.ActionEvent; 

import java.awt.event.ActionListener; 

import java.math.BigDecimal; 

import javax.swing.JButton; 

import javax.swing.JFrame; 

import javax.swing.JTextField; 

public class Calculator extends JFrame implements ActionListener{ 

 private JTextField text; 

 private BigDecimal bigDecimal_a,bigDecimal_b,bigDecimal_result; 

 private boolean isFirst=true,isPoint=true,isEqual=false; 

 private String str; 

 private int operator; 

 private JButton[] jbtns=new JButton[21]; 

 private String[] buttonName={"", 

 "±","C","←","÷", 

 "7","8","9","×", 

 "4","5","6","+", 

 "1","2","3","-" , 

 "0",".","=",""}; 

 public Calculator(){ 

 super("计算器"); 

 Dimension dim=this.getToolkit().getScreenSize(); 

 this.getContentPane().setLayout(null); 

 //this.getContentPane().setBackground(Color.CYAN); 

 this.setBounds(dim.width*2/5, dim.height/4, dim.width/4, dim.height/2); 

 this.setResizable(false); 

 this.setDefaultCloseOperation(EXIT_ON_CLOSE); 

 text=new JTextField(20); 

 text.setBounds(new Rectangle(5, 3, 325, 40)); 

 text.setHorizontalAlignment(JTextField.RIGHT); 

 text.setBackground(Color.CYAN); 

 this.getContentPane().add(text); 

 int count=1; 

 for(int i=1;i i++){ 

 jbtns[i]=new JButton(); 

 jbtns[i] = new JButton(buttonName[i]); 

 jbtns[i].addActionListener(this); 

 this.getContentPane().add(jbtns[i]); 

 int k=i%4; 

 if(i%4==0){ 

 k=4; 

 jbtns[i].setBounds(5+(k-1)*85, 60*count, 70, 42); 

 count++; 

 }else{ 

 jbtns[i].setBounds(5+(k-1)*85, 60*count, 70, 42); 

 jbtns[19].setBounds(5+2*85, 300, 155, 42); 

 text.setFont(new Font("xjj",Font.BOLD,20)); 

 this.setVisible(true); 

 public static void main(String[] args) { 

 new Calculator(); 

 public void actionPerformed(ActionEvent e) { 

 if(e.getSource()==jbtns[19]){ 

 str=text.getText(); 

 if(!haveSign(str) !isEqual){ 

 return ; 

 int i=calculator(); 

 if(i==0){ 

 return ; 

 isEqual=true; 

 isFirst=true; 

 text.setText(""+bigDecimal_result); 

 if(e.getSource()==jbtns[18] isPoint ){ 

 isAddPoint(); 

 String s=str.substring(0,str.length()-1); 

 if(havePoint(s)){ 

 return ; 

 isEqual=false; 

 isPoint=false; 

 text.setText(str); 

 if(e.getSource()==jbtns[1]){ 

 str=text.getText(); 

 if(str.length()==0){ 

 str="-"; 

 text.setText(str); 

 return ; 

 if(str.charAt(str.length()-1)==-||str.charAt(str.length()-1)==+||str.charAt(str.length()-1)==×||str.charAt(str.length()-1)==÷){ 

 str=str+"-"; 

 text.setText(str); 

 return ; 

 if(e.getSource()==jbtns[3] !isEqual){ 

 str=text.getText(); 

 if(str.length()==0){ 

 return ; 

 if(str.length()==1){ 

 str=""; 

 if(str.length() =2){ 

 if(str.charAt(str.length()-1)==÷ || str.charAt(str.length()-1)==× ||str.charAt(str.length()-1)==+ ||str.charAt(str.length()-1)==-){ 

 isFirst=true; 

 str=str.substring(0, str.length()-1); 

 if(havePoint(str)){ 

 isPoint=false; 

 }else{ 

 isPoint=true; 

 text.setText(str); 

 return ; 

 if(e.getSource()==jbtns[2]){ 

 str=""; 

 isFirst=true;isPoint=true;isEqual=false; 

 text.setText(str); 

 return ; 

 JButton jbtn=(JButton)e.getSource(); 

 if(jbtn.getText().compareTo("0") =0 jbtn.getText().compareTo("9") =0){ 

 str=text.getText()+jbtn.getText(); 

 isEqual=false; 

 text.setText(str); 

 for(int i=4;i i+=4){ 

 if(e.getSource()==jbtns[i] isFirst){ 

 str=text.getText(); 

 if(str.length()==0){ 

 return ; 

 isEqual=false; 

 operator=i; 

 str=text.getText()+jbtns[i].getText(); 

 isFirst=false; 

 isPoint=true; 

 text.setText(str); 

 private int calculator() { 

 str=text.getText(); 

 if(operator==4){ 

 String[] string=str.split("÷"); 

 if(string.length==1){ 

 bigDecimal_result=bigDecimal_result.divide(bigDecimal_b,5,BigDecimal.ROUND_HALF_UP); 

 bigDecimal_result=bigDecimal_result.stripTrailingZeros(); 

 return 1; 

 bigDecimal_a=new BigDecimal(string[0]); 

 bigDecimal_b=new BigDecimal(string[1]); 

 if(bigDecimal_b.compareTo(BigDecimal.ZERO)==0){ 

 return 0; 

 bigDecimal_result=bigDecimal_a.divide(bigDecimal_b,20,BigDecimal.ROUND_HALF_UP); 

 bigDecimal_result=bigDecimal_result.stripTrailingZeros(); 

 if(operator==8){ 

 String[] string=str.split("×"); 

 if(string.length==1){ 

 bigDecimal_result=bigDecimal_result.multiply(bigDecimal_b); 

 bigDecimal_result=bigDecimal_result.stripTrailingZeros(); 

 return 1; 

 bigDecimal_a=new BigDecimal(string[0]); 

 bigDecimal_b=new BigDecimal(string[1]); 

 bigDecimal_result=bigDecimal_a.multiply(bigDecimal_b); 

 bigDecimal_result=bigDecimal_result.stripTrailingZeros(); 

 if(operator==12){ 

 String[] string=str.split("+"); 

 if(string.length==1){ 

 bigDecimal_result=bigDecimal_result.add(bigDecimal_b); 

 bigDecimal_result=bigDecimal_result.stripTrailingZeros(); 

 return 1; 

 bigDecimal_a=new BigDecimal(string[0]); 

 bigDecimal_b=new BigDecimal(string[1]); 

 bigDecimal_result=bigDecimal_a.add(bigDecimal_b); 

 bigDecimal_result=bigDecimal_result.stripTrailingZeros(); 

 if(operator==16){ 

 String[] string=str.split("-"); 

 if(string.length==1){ 

 bigDecimal_result=bigDecimal_result.subtract(bigDecimal_b); 

 bigDecimal_result=bigDecimal_result.stripTrailingZeros(); 

 return 1; 

 bigDecimal_a=new BigDecimal(string[0]); 

 bigDecimal_b=new BigDecimal(string[1]); 

 bigDecimal_result=bigDecimal_a.subtract(bigDecimal_b); 

 bigDecimal_result=bigDecimal_result.stripTrailingZeros(); 

 return 1; 

 public void isAddPoint(){ 

 str=text.getText(); 

 if(str.length()==0){ 

 str="0."; 

 return ; 

 if(str.charAt(str.length()-1) 9||str.charAt(str.length()-1) 0){ 

 str=str+"0."; 

 return ; 

 str=text.getText()+"."; 

 public boolean haveSign(String s){ 

 for(int i=0;i s.length();i++){ 

 if(s.charAt(i)==+ || s.charAt(i)==- ||s.charAt(i)==÷ ||s.charAt(i)==×){ 

 return true; 

 return false; 

 public boolean havePoint(String s){ 

 int count=0; 

 for(int i=0;i s.length();i++){ 

 if(s.charAt(i)==. ){ 

 count++; 

 if(count==1 haveSign(s)){ 

 return false; 

 if(count==0 ){ 

 return false; 

 return true; 

} 

10619.html

cjava