?? computerpad.java
字號:
package computerpad;
/**
* @(#)ComputerPad.java
*
*
* @author
* @version 1.00 2008/11/22
*/
import java.awt.*;
import java.awt.event.*;
import java.lang.Double;
import java.lang.String;
import javax.swing.*;
public class ComputerPad extends JFrame implements ActionListener{
private JTextField tf;//文本框
private Panel pan;
private GridLayout gl;
//數字按鈕
private JButton btn0;
private JButton btn1;
private JButton btn2;
private JButton btn3;
private JButton btn4;
private JButton btn5;
private JButton btn6;
private JButton btn7;
private JButton btn8;
private JButton btn9;
private JButton btn_cl;//清零按鈕
private JButton btn_sqr;//開平方按鈕
private JButton btn_zf;//正負按鈕
private JButton btn_back;//回退按鈕
private JButton btn_doc;//小數點
private JButton btn_equ;//等于
//operator(加、減、乘、除)按鈕
private JButton btn_operator1;
private JButton btn_operator2;
private JButton btn_operator3;
private JButton btn_operator4;
private double num[]={0.0,0.0};//存放數據的數組
private double result=0;//計算結果
//當前運算符
private boolean add=false;
private boolean sub=false;
private boolean mul=false;
private boolean div=false;
private boolean isFirst=true;//表示是否為數值的第一個數字
public ComputerPad(){
setSize(300,260);
setLocation(400,150);
this.displayLayout();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void displayLayout(){
//文本顯示框
tf=new JTextField("0.",15);
tf.setBackground(Color.WHITE);
tf.setEditable(false);
tf.setHorizontalAlignment(JTextField.RIGHT);
tf.setVisible(true);
this.add(tf,"North");
gl=new GridLayout(5,4,5,5);
pan=new Panel(gl);
this.add(pan);
btn_sqr=new JButton("Sqr");
btn_sqr.addActionListener(this);
pan.add(btn_sqr);
btn_zf=new JButton("+/-");
btn_zf.addActionListener(this);
pan.add(btn_zf);
btn_back=new JButton("Back");
btn_back.addActionListener(this);
pan.add(btn_back);
btn_cl=new JButton("C");
btn_cl.addActionListener(this);
pan.add(btn_cl);
btn7=new JButton("7");
btn7.addActionListener(this);
pan.add(btn7);
btn8=new JButton("8");
btn8.addActionListener(this);
pan.add(btn8);
btn9=new JButton("9");
btn9.addActionListener(this);
pan.add(btn9);
btn_operator1=new JButton("*");
btn_operator1.addActionListener(this);
pan.add(btn_operator1);
btn4=new JButton("4");
btn4.addActionListener(this);
pan.add(btn4);
btn5=new JButton("5");
btn5.addActionListener(this);
pan.add(btn5);
btn6=new JButton("6");
btn6.addActionListener(this);
pan.add(btn6);
btn_operator2=new JButton("/");
btn_operator2.addActionListener(this);
pan.add(btn_operator2);
btn1=new JButton("1");
btn1.addActionListener(this);
pan.add(btn1);
btn2=new JButton("2");
btn2.addActionListener(this);
pan.add(btn2);
btn3=new JButton("3");
btn3.addActionListener(this);
pan.add(btn3);
btn_operator3=new JButton("+");
btn_operator3.addActionListener(this);
pan.add(btn_operator3);
btn0=new JButton("0");
btn0.addActionListener(this);
pan.add(btn0);
btn_doc=new JButton(".");
btn_doc.addActionListener(this);
pan.add(btn_doc);
btn_equ=new JButton("=");
btn_equ.addActionListener(this);
pan.add(btn_equ);
btn_operator4=new JButton("-");
btn_operator4.addActionListener(this);
pan.add(btn_operator4);
}
public double toDouble(String str)//將字符串轉換成double類型
{
double dou=0;
try{
dou=Double.parseDouble(tf.getText());
}
catch(Exception ex){
//ex.printStackTrace();
}
return dou;
}
public void actionPerformed(ActionEvent e){
String s=e.getActionCommand();//獲取按鈕標簽
String tStr=tf.getText();
double db=this.toDouble(tStr);
if(s.equals("C"))//清零
{
tf.setText("0.");
result=0.0;
num[0]=num[1]=0.0;
isFirst=true;
return;
}
if (s.equals("Back")) //退格
{
String str=tf.getText().substring(0,tf.getText().length()-1);
tf.setText(str);
if (str.equals(""))
{
tf.setText("0.");
isFirst = true;
}
return;
}
if(s.equals("Sqr"))//開方
{
if(db>0)
{
result=Math.sqrt(db);
tf.setText(""+result);
}
else if(db==0)
{
tf.setText("0.0");
}
else
{
tf.setText("錯誤!");
result=0;
}
isFirst=true;
}
if(s.equals("+/-"))//改變
{
if(db==0)
result=0;
else
result=-db;
tf.setText(""+result);
}
if ((s.compareTo("0")>=0) && (s.compareTo("9")<=0) //0~9數字按鈕
|| s.equals("."))
{
if (isFirst)
{
tf.setText("");
isFirst = false;
}
if(s.equals("."))
{
if(db>0)
tf.setText(tStr+s);
else
tf.setText("0.");
}
else
tf.setText(tf.getText()+s);
}
//以下是加、減、乘、除的實現
if(s.equals("+")){
if(num[0]==0.0)
num[0]=toDouble(tStr);
else
num[1]=toDouble(tStr);
tf.setText("0.");
isFirst=true;
result=num[0]+num[1];
System.out.println("+"+num[0]+" "+num[1]);
tf.setText(""+result);
add=true;
sub=false;
mul=false;
div=false;
}
if(s.equals("-")){
if(num[0]==0.0)
num[0]=toDouble(tStr);
else
num[1]=toDouble(tStr);
tf.setText("0.");
isFirst=true;
result = num[0]-num[1];
System.out.println("+"+num[0]+" "+num[1]);
tf.setText(""+result);
add=false;
sub=true;
mul=false;
div=false;
}
if(s.equals("*")){
if(num[0]==0.0)
num[0]=toDouble(tStr);
else
num[1]=toDouble(tStr);
tf.setText("0.");
isFirst=true;
result=num[0]*num[1];
System.out.println("+"+num[0]+" "+num[1]);
tf.setText(""+result);
add=false;
sub=false;
mul=true;
div=false;
}
if(s.equals("/")){
if(num[0]==0.0){
num[0]=toDouble(tStr);
num[1]=1;
}
else{
num[1]=toDouble(tStr);
num[0]=0;
}
tf.setText("0.");
isFirst=true;
try{result=num[0]/num[1];}
catch(Exception ex){
result=0;
num[0]=num[1]=0;
}
System.out.println("+"+num[0]+" "+num[1]);
tf.setText(""+result);
add=false;
sub=false;
mul=false;
div=true;
}
if (s.equals("=")){
isFirst=true;
if(add){
if(num[0]==0.0)
num[0]=toDouble(tStr);
else
num[1]=toDouble(tStr);
result=num[0]+num[1];
System.out.println("="+num[0]+" "+num[1]);
tf.setText(""+result);
num[0]=num[1]=0;
}
if(sub){
if(num[0]==0.0)
num[0]=toDouble(tStr);
else
num[1]=toDouble(tStr);
result=num[0]-num[1];
System.out.println("="+num[0]+" "+num[1]);
tf.setText(""+result);
num[0]=num[1]=0;
}
if(mul){
if(num[0]==0.0)
num[0]=toDouble(tStr);
else
num[1]=toDouble(tStr);
result=num[0]*num[1];
System.out.println("="+num[0]+" "+num[1]);
tf.setText(""+result);
num[0]=num[1]=0;
}
if(div){
if(num[0]==0.0){
num[0]=toDouble(tStr);
num[1]=1;
}
else
num[1]=toDouble(tStr);
tf.setText("0.");
isFirst=true;
try{
result=num[0]/num[1];
}
catch(Exception ex){
result=0;
num[0]=num[1]=0;
}
System.out.println("="+num[0]+" "+num[1]);
tf.setText(""+result);
num[0]=num[1]=0;
}
}
}
public static void main (String[] args) {
ComputerPad cp=new ComputerPad();
cp.setTitle("計算器");
cp.setVisible(true);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -