블로거 워누입니다.
중간고사 문제로 사칙연산이 가능한 계산기를 GUI로 간단하게 구현해 보는 문제가 출제되었습니다.
배우기 쉬운거 같아서 여러분에게도 소개시켜드리고자 합니다.
그럼 바로 코드를 보겠습니다.
import java.awt.event.*; // awt의 이벤트처리에 관한 모든 클래스를 import합니다.
import javax.swing.*; // 자바에서 제공하는 swing의 모든 클래스를 import합니다.
/*
* RadioButtonEvent 클래스는 JFrame을 상속받고,
* ItemListener를 구현하기 위하여 implement를 걸어줍니다.
*/
public class RadioButtonEvent extends JFrame implements ItemListener{
JLabel Lb; // JLabel 객체 Lb를 선언합니다.
JPanel p1, p2; // JPanel 객체 p1, p2를 선언합니다.
JTextField tf1, tf2; // JTextField 객체 tf1, tf2를 선언합니다.
JRadioButton Rb1, Rb2, Rb3, Rb4; // JRadioButton 객체 Rb1, Rb2, Rb3, Rb4를 선언합니다
ButtonGroup grp; // ButtonGroup 객체 grp를 선언합니다.
public RadioButtonEvent(){ // RadioButtonEvent를 메서드로 재선언합니다.
setTitle("라디오버튼 이벤트2"); // Title을 화면에서 출력된 대로 정합니다.
Lb = new JLabel(""); // 라벨을 생성합니다. 연산의 결과를 출력할 라벨입니다.
tf1 = new JTextField(10); // 텍스트필드를 두개 선언합니다.
tf2 = new JTextField(10); // tf1, tf2 는 두 입력값을 받을 것입니다.
Rb1 = new JRadioButton("더하기"); // 라디오버튼을 생성합니다.
Rb2 = new JRadioButton("빼기"); // Rb1은 더하기, Rb2는 빼기
Rb3 = new JRadioButton("곱하기"); // Rb3는 곱하기, Rb4는 나누기로 적어줍니다.
Rb4 = new JRadioButton("나누기"); // 기능은 아래에서 구현합니다.
Rb1.addItemListener(this);
Rb2.addItemListener(this);
Rb3.addItemListener(this);
Rb4.addItemListener(this);
grp = new ButtonGroup(); // 버튼 그룹을 생성합니다.
grp.add(Rb1); // 4개의 라디오버튼을
grp.add(Rb2); // 그룹으로 묶어줍니다.
grp.add(Rb3);
grp.add(Rb4);
p1 = new JPanel(); // 판넬을 두개 생성합니다.
p2 = new JPanel();
p1.add(tf1); // p1 판넬에는
p1.add(tf2); // 텍스트필드 2개를 넣고
p2.add(Rb1); // p2 판넬에는
p2.add(Rb2); // 라디오버튼 4개를 넣어줍니다.
p2.add(Rb3);
p2.add(Rb4);
add("North", p1); // p1 판넬은 위쪽에 배치하고
add("Center", p2); // p2 판넬은 가운데에 배치하고
add("South", Lb); // 라벨은 맨 아래쪽에 배치합니다.
setSize(300, 300); // 프레임의 사이즈는 가로 300, 세로 300으로 합니다.
setVisible(true); // 프레임을 보일수 있도록 setVisible을 true로 잡습니다.
} // end RadioEvnet()
public void itemStateChanged(ItemEvent e){ // 텍스트필드와 라디오버튼의 이벤트처리를 위한 메서드입니다.
double d1, d2, d3; // double 타입 변수 d1, d2, d3를 선언합니다.
d1 = Double.parseDouble(tf1.getText()); // tf1에서 입력받은 값을 double 타입으로 형변환 후 d1에 대입합니다.
d2 = Double.parseDouble(tf2.getText()); // tf2에서 입력받은 값을 double 타입으로 형변환 후 d2에 대입합니다.
if(Rb1.isSelected()){ // Rb1을 체크한 경우
d3 = d1 + d2; // 두 값에 대하여 덧셈 연산을 진행 후 결과를 d3에 저장합니다.
Lb.setText(d1 + "+" + d2 + "=" + d3); // 라벨에 덧셈 연산 결과를 출력합니다.
}
if(Rb2.isSelected()){ // Rb2를 체크한 경우
d3 = d1 - d2; // 두 값에 대하여 뺄셈 연산을 진행 후 결과를 d3에 저장합니다.
Lb.setText(d1 + "-" + d2 + "=" + d3); // 라벨에 뺄셈 연산 결과를 출력합니다.
}
if(Rb3.isSelected()){ // Rb3을 체크한 경우
d3 = d1 * d2; // 두 값에 대하여 곱셈 연산을 진행 후 결과를 d3에 저장합니다.
Lb.setText(d1 + "*" + d2 + "=" + d3); // 라벨에 곱셈 연산 결과를 출력합니다.
}
if(Rb4.isSelected()){ // Rb4를 체크한 경우
d3 = d1 / d2; // 두 값에 대하여 나눗셈 연산을 진행 후 결과를 d3에 저장합니다.
Lb.setText(d1 + "/" + d2 + "=" + d3); // 라벨에 나눗셈 연산 결과를 출력합니다.
}
} // end itemStateChange
// 프로그램 실행 지점입니다.
public static void main(String[] args) {
// TODO Auto-generated method stub
RadioButtonEvent rbe = new RadioButtonEvent(); // RadioButtonEvent 클래스의 객체 rbe를 생성합니다.
} // end main
} // end class
오.. 뭔가 코드가 간단하죠? Swing을 활용하면 코드가 그래도 간단하게 나옵니다,
Swing은 자바에서 지원해주는 GUI중 하나구요!
사용하는 방법도 간단합니다,
.
import javax.swing.*;
.
요렇게만 걸어주면 java에서 제공하는 Swing에 대한 모든 클래스를 다 쓸수 있어요!!!
그리고 이벤트 처리에 관한 것들은 awt에서 제공하는 event로 처리하기 위하여 역시
.
import java.awt.event.*;
.
이렇게 걸어줍니다! 이 두개만 import해도 계산기를 뚝딱 만들더라구요!
다른 코드에는 주석이 달려있으므로 자세한 설명은 생략할게요!
그럼 실행화면을 볼까요?
.
.
연산할 값 두개를 입력할 TextField 2개와
연산 기호 RadioButton 4개, 결과를 출력하는 Label 1개 모두 정상적으로 동작하네요~
혹시 질문 있으시거나 보완할 점이 보이시거든 언제든 댓글을 달아주세요!
무조건 환영입니다!
그럼 20000!
'Java 공부하기' 카테고리의 다른 글
[JAVA] JAVA에서 향상된 For문 쓰기! (2) | 2020.08.30 |
---|---|
자바로 달력을 만들어보자! (0) | 2018.03.02 |
자바 ComboBox와 ImageIcon으로 이미지를 가지고 놀아보아요! (0) | 2017.11.13 |
[JAVA] 숫자로 구성된 배열 가지고 놀기!(삽입, 수정, 삭제 ,정렬) (0) | 2017.10.31 |
Java로 버블정렬 구현하기! (0) | 2017.10.26 |