반응형
package test;
import java.awt.BorderLayout;
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;
public class test extends JFrame implements ActionListener{
JPanel p1;
JLabel lb = new JLabel("0", JLabel.RIGHT);;
String btn[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", "C", "+", "-", "*", "/"};
JButton Btns[] = new JButton[btn.length];
JButton eBtn = new JButton("=");
int num_st = 1;
int op = 0;
double d1, d2, d3;
public test() {
// TODO Auto-generated constructor stub
setTitle("계산기");
setLayout(new BorderLayout());
p1 = new JPanel();
p1.setLayout(new GridLayout(4,4));
for(int i = 0; i < btn.length; i++) {
Btns[i] = new JButton(btn[i]);
Btns[i].addActionListener(this);
p1.add(Btns[i]);
}
eBtn.addActionListener(this);
add("North", lb);
add("Center", p1);
add("South", eBtn);
setTitle("계산기");
setVisible(true);
setSize(200,210);
//화면의 가운데에 띄움
setLocationRelativeTo(null);
//사이즈조절 불가능
setResizable(false);
//창을 닫을 때 실행 중인 프로그램도 같이 종료되도록 함
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String s = lb.getText();
for(int i = 0; i < 10; i++) {
if(e.getSource() == Btns[i]) {
if(Btns[i] == Btns[9]) {
if(num_st > 0) {
num_st = 1;
lb.setText("0");
}
else {
lb.setText(s+"0");
}
}
else {
if(num_st > 0) {
num_st = 0;
lb.setText(String.valueOf(i+1));
}
else {
lb.setText(s + String.valueOf(i+1));
}
}
}
}
if (e.getSource() == Btns[10]) {
if(num_st>0) {
num_st=0;
lb.setText(s+".");
}else
lb.setText(s+".");
}
if (e.getSource() == Btns[11]) {
lb.setText("0");
num_st = 1;
op = 0;
}
if (e.getSource() == Btns[12]) {
num_st = 1;
op = 1;
d1 = Double.parseDouble(lb.getText());
}
if (e.getSource() == Btns[13]) {
num_st = 1;
op = 2;
d1 = Double.parseDouble(lb.getText());
}
if (e.getSource() == Btns[14]) {
num_st = 1;
op = 3;
d1 = Double.parseDouble(lb.getText());
}
if (e.getSource() == Btns[15]) {
num_st = 1;
op = 4;
d1 = Double.parseDouble(lb.getText());
}
if (e.getSource() == eBtn) {
num_st = 1;
d2 = Double.parseDouble(lb.getText());
if(op == 1)
d3 = d1 + d2;
else if (op == 2)
d3 = d1 - d2;
else if (op == 3)
d3 = d1 * d2;
else if (op == 4)
d3 = d1 / d2;
lb.setText(""+d3);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new test();
}
}
실행 결과 화면
반응형
'JAVA' 카테고리의 다른 글
[JAVA] Exception in thread "main" java.lang.IllegalStateException: Cannot load configuration 에러 해결 방법 (0) | 2023.08.09 |
---|---|
[JSP] 웹 쇼핑몰에 오신 것을 환영합니다 (소스 코드) (0) | 2023.08.05 |
[JAVA] Cannot paste the clipboard contents. 해결 방법 (0) | 2023.08.03 |
[JAVA] 마름모 출력 소스 코드 (0) | 2023.08.02 |
[Java / MySQL] 도서 관리 시스템 04 (MVC패턴)(마무리) (0) | 2023.02.04 |
댓글