Calculator II
작성자 정보
- 작성자 최고관리자
- 작성일
컨텐츠 정보
- 조회 321
본문
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CalcFrame extends JFrame implements ActionListener, KeyListener {
JTextField text;
JPanel buttonPanel;
JButton numButton[] = new JButton[10];
JButton dotButton, equalButton;
JButton plusButton, minusButton, mulButton, divButton;
JButton clearButton;
String s = "";
double result = 0;
double num = 0;
char operator;
public CalcFrame() {
setTitle("계산기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLayout(new BorderLayout());
text = new JTextField("0");
text.setEditable(false);
buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(0, 4));
for(int i=0; i<10; i++) {
numButton[i] = new JButton("" + i);
numButton[i].addActionListener(this);
}
dotButton = new JButton(".");
equalButton = new JButton("=");
plusButton = new JButton("+");
minusButton= new JButton("-");
mulButton = new JButton("*");
divButton = new JButton("/");
dotButton.addActionListener(this);
equalButton.addActionListener(this);
plusButton.addActionListener(this);
minusButton.addActionListener(this);
mulButton.addActionListener(this);
divButton.addActionListener(this);
buttonPanel.add(numButton[1]);
buttonPanel.add(numButton[2]);
buttonPanel.add(numButton[3]);
buttonPanel.add(plusButton);
buttonPanel.add(numButton[4]);
buttonPanel.add(numButton[5]);
buttonPanel.add(numButton[6]);
buttonPanel.add(minusButton);
buttonPanel.add(numButton[7]);
buttonPanel.add(numButton[8]);
buttonPanel.add(numButton[9]);
buttonPanel.add(mulButton);
buttonPanel.add(dotButton);
buttonPanel.add(numButton[0]);
buttonPanel.add(equalButton);
buttonPanel.add(divButton);
clearButton = new JButton("Clear");
clearButton.addActionListener(this);
add(text, BorderLayout.NORTH);
add(buttonPanel, BorderLayout.CENTER);
add(clearButton, BorderLayout.SOUTH);
addKeyListener(this);
pack();
}
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
for(int i=0; i<10; i++) {
if(button == numButton[i]) {
s += i;
text.setText(s);
}
}
if(button == dotButton) {
s += ".";
text.setText(s);
}
else if(button == clearButton) {
s = "";
result = 0;
num = 0;
operator = 0;
text.setText("0");
} else if(button == plusButton) {
result = Double.parseDouble(text.getText());
text.setText("0");
s = "";
operator = '+';
System.out.println(result);
} else if(button == minusButton) {
result = Double.parseDouble(text.getText());
text.setText("0");
s = "";
operator = '-';
System.out.println(result);
} else if(button == mulButton) {
result = Double.parseDouble(text.getText());
text.setText("0");
s = "";
operator = '*';
System.out.println(result);
} else if(button == divButton) {
result = Double.parseDouble(text.getText());
text.setText("0");
s = "";
operator = '/';
System.out.println(result);
} else if(button == equalButton) {
if(num == 0)
num = Double.parseDouble(text.getText());
switch(operator) {
case '+':
result += num;
break;
case '-':
result -= num;
break;
case '*':
result *= num;
break;
case '/':
result /= num;
break;
}
text.setText("" + result);
s = "";
}
}
public static void main(String[] args) {
CalcFrame f = new CalcFrame();
}
@Override
public void keyPressed(KeyEvent e) {
char ch = e.getKeyChar();
if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
s = "";
result = 0;
num = 0;
operator = 0;
text.setText("0");
}
for(int i=0; i<10; i++) {
if(ch == '0' + i) {
s += i;
text.setText(s);
}
}
if(ch == '.') {
s += ".";
text.setText(s);
}
else if(ch == '+') {
result = Double.parseDouble(text.getText());
text.setText("0");
s = "";
operator = '+';
System.out.println(result);
}
else if(ch == '-') {
result = Double.parseDouble(text.getText());
text.setText("0");
s = "";
operator = '-';
System.out.println(result);
} else if(ch == '*') {
result = Double.parseDouble(text.getText());
text.setText("0");
s = "";
operator = '*';
System.out.println(result);
} else if(ch == '/') {
result = Double.parseDouble(text.getText());
text.setText("0");
s = "";
operator = '/';
System.out.println(result);
} else if(ch == '=') {
if(num == 0)
num = Double.parseDouble(text.getText());
switch(operator) {
case '+':
result += num;
break;
case '-':
result -= num;
break;
case '*':
result *= num;
break;
case '/':
result /= num;
break;
}
text.setText("" + result);
s = "";
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
관련자료
-
다음
댓글 0개
등록된 댓글이 없습니다.