
import java.awt.Color; |
import java.awt.Font; |
import java.awt.GridLayout; |
import java.awt.event.ActionEvent; |
import java.awt.event.ActionListener; |
import javax.swing.JButton; |
import javax.swing.JFrame; |
import javax.swing.JLabel; |
import javax.swing.JPanel; |
import javax.swing.JTextField; |
import javax.swing.WindowConstants; |
import javax.swing.border.LineBorder; |
class Normal{ |
double i,j; |
public Normal(double num1,double num2){ |
i=num1; |
j=num2; |
} |
public double puls(){ |
return i+j; |
} |
public double subtract(){ |
return i-j; |
} |
public double multiply(){ |
return i*j; |
} |
public double divide(){ |
return i/j; |
} |
public double surpuls(){ |
return i%j; |
} |
} |
class scientific extends Normal{ |
public scientific(int num1, int num2) { |
super(num1, num2); |
} |
} |
public class calc extends JFrame{ |
public static void main(String[] args) { |
viewNormal VN= new viewNormal("normal"); |
} |
} |
class viewNormal extends JFrame implements ActionListener{ |
JPanel jp1 = new JPanel(new GridLayout(4,3,5,5)); |
JPanel jp2 = new JPanel(new GridLayout(5,1,5,5)); |
JLabel jl; |
JButton[] jb; |
JButton jbs,jbo,jba,jbb,jbc,jby; |
StringBuffer sb = new StringBuffer(); |
Normal normal; |
int dot=0; |
double fnum=0; |
double lnum=0; |
double result; |
String sign=null; |
public viewNormal(String title){ |
setTitle(title); |
setLayout(null); |
setVisible(true); |
setBounds(200,200,305,350); |
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); |
jb= new JButton[12]; |
for(int i=0;i<9;i++){ |
jb[i]=new JButton(""+(i+1)); |
jp1.add(jb[i]); |
jb[i].addActionListener(this); |
} |
jb[9]=new JButton("."); |
jb[10]=new JButton("0"); |
jb[11]=new JButton("="); |
jb[9].addActionListener(this); |
jb[10].addActionListener(this); |
jb[11].addActionListener(this); |
jp1.add(jb[9]); |
jp1.add(jb[10]); |
jp1.add(jb[11]); |
jp1.setBounds(10, 100, 200, 200); |
jbs= new JButton("+");jbo= new JButton("-");jba= new JButton("*"); |
jbb= new JButton("/");jby= new JButton("%");jbc= new JButton("C"); |
jbs.addActionListener(this);jbo.addActionListener(this);jba.addActionListener(this); |
jbb.addActionListener(this);jby.addActionListener(this);jbc.addActionListener(this); |
//jp2.add(jby); |
jp2.add(jbs);jp2.add(jbo);jp2.add(jba);jp2.add(jbb);jp2.add(jbc); |
jp2.setBounds(215, 100, 70, 200); |
jl= new JLabel("0",JLabel.RIGHT); |
jl.setFont(new Font("Batang",Font.BOLD, 20)); |
jl.setBorder(new LineBorder(Color.black,2)); |
jl.setBackground(Color.white); |
jl.setBounds(10, 40, 275, 50); |
jl.setOpaque(true); |
add(jl); |
add(jp1); |
add(jp2); |
} |
//+ |
public void sum(){ |
lnum=Double.parseDouble(sb.toString()); |
normal=new Normal(fnum,lnum); |
fnum=normal.puls(); |
result=fnum; |
} |
//- |
private void sub() { |
System.out.println(sb.toString()); |
lnum=Double.parseDouble(sb.toString()); |
normal=new Normal(fnum,lnum); |
fnum=normal.subtract(); |
result=fnum; |
} |
//* |
private void mul() { |
lnum=Double.parseDouble(sb.toString()); |
normal=new Normal(fnum,lnum); |
fnum=normal.multiply(); |
result=fnum; |
} |
// / |
private void div() { |
lnum=Double.parseDouble(sb.toString()); |
normal=new Normal(fnum,lnum); |
fnum=normal.divide(); |
result=fnum; |
} |
//% |
private void sur() { |
lnum=Double.parseDouble(sb.toString()); |
normal=new Normal(fnum,lnum); |
fnum=normal.surpuls(); |
result=fnum; |
} |
// = |
private void same(){ |
if(sign.equals("+")){ |
sum(); |
} |
if(sign.equals("-")){ |
sub(); |
} |
if(sign.equals("*")){ |
mul(); |
} |
if(sign.equals("/")){ |
div(); |
} |
if(sign.equals("%")){ |
sur(); |
} |
} |
//result |
public void Result(){ |
if(result%1!=0) |
jl.setText(""+result); |
else |
{ |
int i=(int)result; |
jl.setText(""+i); |
} |
} |
@Override |
public void actionPerformed(ActionEvent e) { |
//System.out.println(sb.toString()); |
// 1~9 |
for(int i=0;i<9;i++){ |
if(e.getSource()==jb[i]&&!sb.toString().equals("0")){ |
sb.append(jb[i].getText()); |
jl.setText(sb.toString()); |
} |
else if(e.getSource()==jb[i]&&sb.toString().equals("0")){ |
int d=sb.length(); |
sb.delete(0, d); |
sb.append(jb[i].getText()); |
jl.setText(sb.toString()); |
} |
} |
// 0 |
if(e.getSource()==jb[10]&&!sb.toString().equals("0")){ |
sb.append(jb[10].getText()); |
jl.setText(sb.toString()); |
} |
// . |
if(e.getSource()==jb[9]&&dot==0&&!sb.toString().equals("")){ |
dot++; |
sb.append(jb[9].getText()); |
jl.setText(sb.toString()); |
} |
// = |
if(e.getSource()==jb[11]&&!sb.toString().equals("")){ |
same(); |
Result(); |
int d=sb.length(); |
sb.delete(0, d); |
dot=0; |
} |
// + |
if(e.getSource()==jbs&&!sb.toString().equals("")){ |
if(sign!="+"&&sign!=null) |
same(); |
else |
sum(); |
sign ="+"; |
Result(); |
int d=sb.length(); |
sb.delete(0, d); |
dot=0; |
} |
//- |
if(e.getSource()==jbo&&!sb.toString().equals("")){ |
if(fnum==0) |
fnum=2*Double.parseDouble(sb.toString()); |
if(sign!="-"&&sign!=null) |
same(); |
else |
sub(); |
sign ="-"; |
Result(); |
int d=sb.length(); |
sb.delete(0, d); |
dot=0; |
} |
//* |
if(e.getSource()==jba&&!sb.toString().equals("")){ |
if(fnum==0) |
fnum=1; |
if(sign!="*"&&sign!=null) |
same(); |
else |
mul(); |
sign ="*"; |
Result(); |
int d=sb.length(); |
sb.delete(0, d); |
dot=0; |
} |
// / |
if(e.getSource()==jbb&&!sb.toString().equals("")){ |
if(fnum==0) |
fnum=Math.pow(Double.parseDouble(sb.toString()),2); |
if(sign!="/"&&sign!=null) |
same(); |
else |
div(); |
sign ="/"; |
Result(); |
int d=sb.length(); |
sb.delete(0, d); |
dot=0; |
} |
//% |
// if(e.getSource()==jby&&!sb.toString().equals("")){ |
// if(fnum==0){ |
// fnum=Double.parseDouble(sb.toString()); |
// result=fnum; |
// } |
// else { |
// if(sign!="%"&&sign!=null) |
// same(); |
// else{ |
// lnum=Double.parseDouble(sb.toString()); |
// normal=new Normal(fnum,lnum); |
// fnum=normal.surpuls(); |
// result=fnum; |
// } |
// } |
// sign ="%"; |
// Result(); |
// int d=sb.length(); |
// sb.delete(0, d); |
// dot=0; |
// } |
//clear |
if(e.getSource()==jbc){ |
int d=sb.length(); |
sb.delete(0, d); |
jl.setText("0"); |
dot=0; |
fnum=0; |
lnum=0; |
sign=null; |
} |
} |
} |
class viewScientific extends viewNormal{ |
public viewScientific(String title){ |
super(title); |
setBounds(200,200,800,500); |
} |
} |




by: 发表于:2017-06-21 17:23:52 顶(0) | 踩(0) 回复
??
回复评论