import java.awt.*;
import java.awt.event.*;
public class JCalc extends Frame {
static double number = 0.0;
char operator = ' ';
Button button[][] = new Button[4][4], clear;
Label label;
Panel buttons[] = new Panel[4];
String[][] txt = {{"7", "8", "9", "/"},
{"4", "5", "6", "*"},
{"1", "2", "3", "-"},
{"0", "SQRT", "%", "="}};
public JCalc(String title) {
super(title);
int i, j;
this.setLayout(new GridLayout(6, 1));
label = new Label("0", label.RIGHT);
// label.setSize(200, 20);
label.setForeground(Color.black);
label.setBackground(Color.white);
this.add(label);
clear = new Button("C");
// clear.setSize(15, 15);
this.add(clear);
for (i=0;i<=3;i++) {
buttons[i] = new Panel();
buttons[i].setLayout(new GridLayout(0, 4));
for(j=0;j<=3;j++) {
button[i][j] = new Button(txt[i][j]);
buttons[i].add(button[i][j]);
}
this.add(buttons[i]);
}
}
public boolean action(Event event, Object obj) {
if(event.target == clear) {
label.setText("0");
return true;
}
if(event.target == button[0][0]) {
label.setText(((label.getText()=="0")?(""):(label.getText())) +
'7')
;
return true;
}
if(event.target == button[0][1]) {
label.setText(((label.getText()=="0")?(""):(label.getText())) +
'8')
;
return true;
}
if(event.target == button[0][2]) {
label.setText(((label.getText()=="0")?(""):(label.getText()))+'9');
return true;
}
if(event.target == button[0][3]) {
number = Double.valueOf(label.getText()).doubleValue();
label.setText("0");
operator = '/';
return true;
}
if(event.target == button[1][0]) {
label.setText(((label.getText()=="0")?(""):(label.getText()))+'4');
return true;
}
if(event.target == button[1][1]) {
label.setText(((label.getText()=="0")?(""):(label.getText()))+'5');
return true;
}
if(event.target == button[1][2]) {
label.setText(((label.getText()=="0")?(""):(label.getText()))+'6');
return true;
}
if(event.target == button[1][3]) {
number = Double.valueOf(label.getText()).doubleValue();
label.setText("0");
operator = '*';
return true;
}
if(event.target == button[2][0]) {
label.setText(((label.getText()=="0")?(""):(label.getText()))+'1');
return true;
}
if(event.target == button[2][1]) {
label.setText(((label.getText()=="0")?(""):(label.getText()))+'2');
return true;
}
if(event.target == button[2][2]) {
label.setText(((label.getText()=="0")?(""):(label.getText()))+'3');
return true;
}
if(event.target == button[2][3]) {
number = Double.valueOf(label.getText()).doubleValue();
label.setText("0");
operator = '-';
return true;
}
if(event.target == button[3][0]) {
label.setText(((label.getText()=="0")?(""):(label.getText()))+'0');
return true;
}
if(event.target == button[3][1]) {
label.setText(Double.toString(Math.sqrt(Double.valueOf(label.getText()).doubleV
alue())));
return true;
}
if(event.target == button[3][2]) {
number = Double.valueOf(label.getText()).doubleValue();
label.setText("0");
operator = '%';
return true;
}
if(event.target == button[3][3]) {
switch (operator){
case '/':
label.setText(Double.toString(number/Double.valueOf(label.getTex
t()).doubleValue()));
return true;
case '*':
label.setText(Double.toString(number*Double.valueOf(label.getTex
t()).doubleValue()));
return true;
case '-':
label.setText(Double.toString(number-Double.valueOf(label.getTex
t()).doubleValue()));
return true;
case '%':
label.setText(Double.toString(number%Double.valueOf(label.getTex
t()).doubleValue()));
return true;
}
}
return false;
}
public static void main(String[] argv)
{
Frame f=new JCalc("JCalc");
f.setSize(200, 200);
f.show();
}
}
-------------------------------------------------------------------
소스가 지저분하더라도 양해 바랍니다.
잘 될지 모르겠군요. 오늘 아침에 만든거라...
참.. EXIT button은 못 만들었습니다. (게을러서...) 죄송하지만 직접 만드세요.
그럼 이만..