?? jcalc.java
字號:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.math.*;
import java.applet.*;
public class JCalc extends Applet {
public static Label jl;
public void actionPerformed(ActionEvent e) {
String key = e.getActionCommand();
if (key.equals("AC")) {
jl.setText("0");
}else if (key.equals("=")) {
jl.setText(getResult(jl.getText()));
} else if (jl.getText().equals("0") && "0123456789".indexOf(key) >=0 ) {
jl.setText(key);
} else {
jl.setText(jl.getText()+key);
}
}
public static void main(String args[] ) {
System.out.println("JCalc Started");
JFrame f = new JFrame("Java Calculator");
//Begin, When compiled with Java 1.4
//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//End, When compiled with Java 1.4
//Begin, When compiled with Java 1.2
WindowAdapter wl = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
f.addWindowListener(wl);
//End, When compiled with Java 1.2
Container cont = f.getContentPane();
cont.add(new JCalc());
f.setLocation(400,400);
f.setSize(300,300);
f.setVisible(true);
}
public JCalc() {
setLayout(new BorderLayout());
GridBagConstraints g = new GridBagConstraints();
Panel c = new Panel();
c.setLayout (new GridBagLayout());
g.fill = GridBagConstraints.BOTH;
g.weightx = 1;
g.weighty = 1;
ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent e) {
String key = e.getActionCommand();
if (key.equals("AC")) {
jl.setText("0");
}else if (key.equals("=")) {
jl.setText(getResult(jl.getText()));
} else if (jl.getText().equals("0") && "0123456789".indexOf(key) >=0 ) {
jl.setText(key);
} else {
jl.setText(jl.getText()+key);
}
}
};
addButton(c,"7",g,1,al);
addButton(c,"8",g,1,al);
addButton(c,"9",g,1,al);
addButton(c,"*",g,1,al);
addButton(c,"/",g,GridBagConstraints.REMAINDER,al);
addButton(c,"4",g,1,al);
addButton(c,"5",g,1,al);
addButton(c,"6",g,1,al);
addButton(c,"-",g,GridBagConstraints.REMAINDER,al);
addButton(c,"1",g,1,al);
addButton(c,"2",g,1,al);
addButton(c,"3",g,1,al);
addButton(c,"+",g,GridBagConstraints.REMAINDER,al);
addButton(c,"0",g,1,al);
addButton(c,".",g,1,al);
addButton(c,"AC",g,1,al);
addButton(c,"=",g,GridBagConstraints.REMAINDER,al);
jl = new Label("0");
jl.setFont(new Font("Arial",0,20));
jl.setAlignment(jl.RIGHT);
add("North",jl);
add("Center",c);
}
public static void addButton(Panel c, String label, GridBagConstraints g,
int gridwidth,ActionListener al) {
g.gridwidth = gridwidth;
Button tempjb = new Button(label);
tempjb.addActionListener(al);
tempjb.setFont(new Font("Arial",0,20));
c.add(tempjb,g);
}
public static String getResult(String a){
String[] expArr = splitExpression(a);
if (expArr[1].equals("")) return a;
String rv = "";
if (expArr[1].equals("+")) {
//rv = ""+(Float.parseFloat(getResult(expArr[0]))+Float.parseFloat(getResult(expArr[2])));
rv = (new BigDecimal(getResult(expArr[0])).add
(new BigDecimal(getResult(expArr[2])))).toString();
} else if (expArr[1].equals("-")) {
rv = (new BigDecimal(getResult(expArr[0])).subtract
(new BigDecimal(getResult(expArr[2])))).toString();
} else if (expArr[1].equals("*")) {
rv = (new BigDecimal(getResult(expArr[0])).multiply
(new BigDecimal(getResult(expArr[2])))).toString();
} else {
rv = (new BigDecimal(getResult(expArr[0])).divide
(new BigDecimal(getResult(expArr[2])),2,BigDecimal.ROUND_HALF_UP)).setScale(2).toString();
}
return rv;
}
//public static BigDecimal toBigDecimal(String str) {
// BigDecimal bd = new BigDecimal(str);
// return bd;
//}
public static String[] splitExpression(String a) {
String[] rv = new String[3];
rv[0] = "";
rv[1] = "";
rv[2] = "";
int pos = -1;
for (int i = a.length()-1 ; i >= 1 ; i--) {
if ("*/".indexOf(a.substring(i,i+1)) >= 0) {
pos = i;
break;
}
}
for (int i = a.length()-1 ; i >= 1 ; i--) {
if ("+-".indexOf(a.substring(i,i+1)) >= 0) {
pos = i;
break;
}
}
if (pos != -1){
rv[0] = a.substring(0,pos).trim();
rv[1] = a.substring(pos,pos+1).trim();
rv[2] = a.substring(pos+1).trim();
}
return rv;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -