?? cal.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 + -