⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cal.java

📁 用swing做的计算器
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class cal extends JFrame//定义主类 MyCaculator
implements ActionListener,ItemListener//接口继承 常用事件处理
{
CheckboxGroup cbg=new CheckboxGroup();
ButtonGroup g=new ButtonGroup();
JRadioButton rb1=new JRadioButton("HEX",false);
JRadioButton rb2=new JRadioButton("DEC",true);
JButton Button_1=new JButton("1");
JButton Button_2=new JButton("2");
JButton Button_3=new JButton("3");
JButton Button_4=new JButton("4");
JButton Button_5=new JButton("5");
JButton Button_6=new JButton("6");
JButton Button_7=new JButton("7");
JButton Button_8=new JButton("8");
JButton Button_9=new JButton("9");
JButton Button_0=new JButton("0");
JButton Button_A=new JButton("A");
JButton Button_B=new JButton("B");
JButton Button_C=new JButton("C");
JButton Button_D=new JButton("D");
JButton Button_E=new JButton("E");
JButton Button_F=new JButton("F");
JButton Button_Add=new JButton("+");
JButton Button_Del=new JButton("-");
JButton Button_Div=new JButton("/");
JButton Button_Mul=new JButton("*");
JButton Button_Equ=new JButton("=");
JButton Button_Min=new JButton("+/-");
JButton Button_Dot=new JButton(".");
JButton Button_CE=new JButton("CE");

JTextField TextField=new JTextField(15);//创建输入单行文本区域对象
JPanel Panel=new JPanel();
JPanel Buttons=new JPanel();
float Left,Right,Result=0,save,save1,result;     //保存数值
int Type;//运算类型标示
int temp,temp1=0;
boolean flag=false;//为十六进制下的计算此标志便为true

public void actionPerformed(ActionEvent e)//对用户输入做出响应
{
	try{
 if(e.getSource()==Button_Add)
{
  if(flag){
  	  Left=(float)Long.parseLong(TextField.getText(),16);
  	  }else{
  Left=Float.parseFloat(TextField.getText());  //保存第一操作数
  TextField.setText(Float.toString(Left));//窗口内容重填
  	  }
   Type=1;
   temp1=1;
}

 if(e.getSource()==Button_Del)
{
  if(flag){
  	  Left=(float)Long.parseLong(TextField.getText(),16);
  	  }else{
  Left=Float.parseFloat(TextField.getText());  //保存第一操作数
  TextField.setText(Float.toString(Left));//窗口内容重填
  	  }
   Type=2;
   temp1=1;
}

 if(e.getSource()==Button_Mul)
{
  if(flag){
  	  Left=(float)Long.parseLong(TextField.getText(),16);
  	  }else{
  Left=Float.parseFloat(TextField.getText());  //保存第一操作数
  TextField.setText(Float.toString(Left));//窗口内容重填
  	  }
   Type=3;
  temp1=1;
}

 if(e.getSource()==Button_Div)
{
  if(flag){
  	  Left=(float)Long.parseLong(TextField.getText(),16);
  	  }else{
  Left=Float.parseFloat(TextField.getText());  //保存第一操作数
  TextField.setText(Float.toString(Left));//窗口内容重填
  	  }
   Type=4;
  temp1=1;
}

 
 if(e.getSource()==Button_Min)
   {save=Float.parseFloat(TextField.getText());
    save1=0-save;
    TextField.setText(Float.toString(save1));
   }
	}catch(NumberFormatException ex){}

 if(e.getSource()==Button_Equ)
{ temp1=1;
  switch(Type)
  {
  case 1:
  if(flag){
  	  Right=(float)Long.parseLong(TextField.getText(),16);
  	  Result=Left+Right;
  	  TextField.setText(Long.toHexString((long)Result).toUpperCase());
  	  }else{
  Right=Float.parseFloat(TextField.getText());//保存第二操作数
  Result=Left+Right;   //计算结果
  temp=(int)Left;
   if((float)temp==Result)
     TextField.setText(Integer.toString(temp));
   else TextField.setText(Float.toString(Result));}//输出第二操作数
  break;
  case 2:
  if(flag){
  	  Right=(float)Long.parseLong(TextField.getText(),16);
  	  Result=Left-Right;
  	  TextField.setText(Long.toHexString((long)Result).toUpperCase());
  	  }else{
  Right=Float.parseFloat(TextField.getText());//保存第二操作数
  Result=Left-Right;   //计算结果
   temp=(int)Left;
   if((float)temp==Result)
     TextField.setText(Integer.toString(temp));
   else TextField.setText(Float.toString(Result));}//输出结果
  break;
  case 3:
    if(flag){
  	  Right=(float)Long.parseLong(TextField.getText(),16);
  	  Result=Left*Right;
  	  TextField.setText(Long.toHexString((long)Result).toUpperCase());
  	  }else{
  Right=Float.parseFloat(TextField.getText());//保存第二操作数
  Result=Left*Right;   //计算结果
   temp=(int)Left;
   if((float)temp==Result)   //判断浮点数是否可以直接转换为整形数
     TextField.setText(Integer.toString(temp));
     else  TextField.setText(Float.toString(Result));}//输出结果
  break;
  case 4:
  if(flag){
  	  Right=(float)Long.parseLong(TextField.getText(),16);
  	  Result=Left/Right;
  	  TextField.setText(Long.toHexString((long)Result).toUpperCase());
  	  }else{
  Right=Float.parseFloat(TextField.getText());//保存第二操作数
   Result=Left/Right;   //计算结果
    temp=(int)Left;
   if((float)temp==Result)
     TextField.setText(Integer.toString(temp));
     else
  TextField.setText(Float.toString(Result));}//输出结果

    break;
     }
}

 if(e.getSource()==Button_CE)
   {TextField.setText("0");
    temp1=1;
   }
 if(e.getSource()==Button_1)
  { if(temp1==1)
   {TextField.setText("1");
    temp1=0;}
   else TextField.setText(TextField.getText()+"1");
  }
 if(e.getSource()==Button_2)
  { if(temp1==1)
   {TextField.setText("2");
    temp1=0;}
    else TextField.setText(TextField.getText()+"2");
  }
 if(e.getSource()==Button_3)
  {if(temp1==1)
   {TextField.setText("3");
    temp1=0;}
   else TextField.setText(TextField.getText()+"3");
  }
 if(e.getSource()==Button_4)
  {if(temp1==1)
   {TextField.setText("4");
    temp1=0;}
   else TextField.setText(TextField.getText()+"4");
  }
 if(e.getSource()==Button_5)
  {if(temp1==1)
   {TextField.setText("5");
    temp1=0;}
   else TextField.setText(TextField.getText()+"5");
  }
 if(e.getSource()==Button_6)
  {if(temp1==1)
   {TextField.setText("6");
    temp1=0;}
   else TextField.setText(TextField.getText()+"6");
  }
 if(e.getSource()==Button_7)
  {if(temp1==1)
   {TextField.setText("7");
    temp1=0;}
   else TextField.setText(TextField.getText()+"7");
  }
 if(e.getSource()==Button_8)
  {if(temp1==1)
   {TextField.setText("8");
    temp1=0;}
   else TextField.setText(TextField.getText()+"8");
  }
 if(e.getSource()==Button_9)
  {if(temp1==1)
   {TextField.setText("9");
    temp1=0;}
   else TextField.setText(TextField.getText()+"9");
  }
 if(e.getSource()==Button_0)
  {if(temp1==1)
   {TextField.setText("0");
    temp1=0;}
   else TextField.setText(TextField.getText()+"0");
  }
 if(e.getSource()==Button_Dot){
    TextField.setText(TextField.getText()+".");
    temp1=0;
    }
 if(e.getSource()==Button_A)
  {   
    if(flag){
    if(temp1==1)
    TextField.setText("A");
    else TextField.setText(TextField.getText()+"A");
    temp1=0;
  }
 }
  if(e.getSource()==Button_B)
  {
   if(flag){
    if(temp1==1)
    TextField.setText("B");
    else TextField.setText(TextField.getText()+"B");
    temp1=0;
  }
}
   if(e.getSource()==Button_C)
  {
   if(flag){
    if(temp1==1)
    TextField.setText("C");
    else TextField.setText(TextField.getText()+"C");
    temp1=0;
  }
   }
   if(e.getSource()==Button_D)
  {
    if(flag){
    if(temp1==1)
    TextField.setText("D");
    else TextField.setText(TextField.getText()+"D");
    temp1=0;
  }
   }
   if(e.getSource()==Button_E)
  {
   if(flag){
    if(temp1==1)
    TextField.setText("E");
    else TextField.setText(TextField.getText()+"E");
    temp1=0;
  }
   }
}//end of method actionPerformed

   public void itemStateChanged(ItemEvent e){
   	  try{
   	   if(rb1.isSelected()){
   	   	   flag=true;
   	   	   float temp=Float.parseFloat(TextField.getText());
   	   	   TextField.setText(Long.toHexString((long)temp).toUpperCase());
   	   	   Button_A.setEnabled(true);
   	   	   Button_B.setEnabled(true);
   	   	   Button_C.setEnabled(true);
   	   	   Button_D.setEnabled(true);
   	   	   Button_E.setEnabled(true);
   	   	   Button_F.setEnabled(true);
   	   	   Button_Dot.setEnabled(false);
   	     }        
       if(rb2.isSelected()){
       	   flag=false;
       	   TextField.setText(""+Long.parseLong(TextField.getText(),16));
   	   	   Button_A.setEnabled(false);
   	   	   Button_B.setEnabled(false);
   	   	   Button_C.setEnabled(false);
   	   	   Button_D.setEnabled(false);
   	   	   Button_E.setEnabled(false);
   	   	   Button_F.setEnabled(false);
   	   	   Button_Dot.setEnabled(true);
	   }
 }catch(NumberFormatException ex){
 	 if(rb1.isSelected()){
 	     flag=true;
 	     Button_A.setEnabled(true);
   	     Button_B.setEnabled(true);
   	     Button_C.setEnabled(true);
   	     Button_D.setEnabled(true);
   	     Button_E.setEnabled(true);
   	     Button_F.setEnabled(true);
   	     Button_Dot.setEnabled(false);
  }else{
  	       flag=false;
  	       Button_A.setEnabled(false);
   	   	   Button_B.setEnabled(false);
   	   	   Button_C.setEnabled(false);
   	   	   Button_D.setEnabled(false);
   	   	   Button_E.setEnabled(false);
   	   	   Button_F.setEnabled(false);
   	   	   Button_Dot.setEnabled(true);
           }
 }
}//end of method itemStateChanged

public cal()//对对象初始化
{
   super("MyCaculator");
this.addWindowListener (new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});


Button_1.addActionListener(this);
Button_2.addActionListener(this);
Button_3.addActionListener(this);
Button_4.addActionListener(this);
Button_5.addActionListener(this);
Button_6.addActionListener(this);
Button_7.addActionListener(this);
Button_8.addActionListener(this);
Button_9.addActionListener(this);
Button_0.addActionListener(this);
Button_A.addActionListener(this);
Button_B.addActionListener(this);
Button_C.addActionListener(this);
Button_D.addActionListener(this);
Button_E.addActionListener(this);
Button_Add.addActionListener(this);//事件监听
Button_Del.addActionListener(this);//事件监听
Button_Div.addActionListener(this);//事件监听
Button_Mul.addActionListener(this);//事件监听
Button_Dot.addActionListener(this);
Button_CE.addActionListener(this);
Button_Min.addActionListener(this);
        g.add(rb1);g.add(rb2);//实现有两个单选按钮的按钮组
        rb1.addItemListener(this);//"HEX"
        rb2.addItemListener(this);//"DEC"
Panel.setLayout(new FlowLayout());//将TextField加入窗口
Panel.add(rb1);
Panel.add(TextField);
Panel.add(rb2);
Buttons.setLayout(new GridLayout(4,4));
Buttons.add(Button_1);
Buttons.add(Button_2);
Buttons.add(Button_3);
Buttons.add(Button_CE);
Buttons.add(Button_Add);
Buttons.add(Button_Del);
Buttons.add(Button_4);
Buttons.add(Button_5);
Buttons.add(Button_6);
Buttons.add(Button_Div);
Buttons.add(Button_Mul);
Buttons.add(Button_Min);
Buttons.add(Button_7);
Buttons.add(Button_8);
Buttons.add(Button_9);
Buttons.add(Button_0);
Buttons.add(Button_Dot);
Buttons.add(Button_Equ);
Buttons.add(Button_A);
Buttons.add(Button_B);
Buttons.add(Button_C);
Buttons.add(Button_D);
Buttons.add(Button_E);
Buttons.add(Button_F);
Button_Equ.addActionListener(this);//事件监听
getContentPane().add(Panel,"North");//将Panel加入窗口
getContentPane().add(Buttons,"Center");

     Button_A.setEnabled(false);//初始化为十进制,所以按钮A,B,C,D,E,.不可用
   	 Button_B.setEnabled(false);
   	 Button_C.setEnabled(false);
   	 Button_D.setEnabled(false);
   	 Button_E.setEnabled(false);
   	 Button_F.setEnabled(false);
}//end of constructor

public static void main(String args[])//定义主类中的main方法
{
	try {
    		UIManager.setLookAndFeel("com.sun.java."+
      			"swing.plaf.windows.WindowsLookAndFeel");
     
    		} catch(Exception e) {
    		e.printStackTrace();
    			}//改变界面风格为windows风格

System.out.println("Starting MyCaculator");
cal f = new cal();
f.setSize(320,200);
f.setResizable(false);
f.setVisible(true);
//f.show();
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -