2024-11-08







package basic;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Ex34_Event extends JFrame {
public Ex34_Event() {
setTitle("성적 처리");
// 컨테이너를 만들자.
JPanel container1 = new JPanel(); // 상단-1 컨테이너
JPanel container2 = new JPanel(); // 상단-2 컨테이너
JPanel container3 = new JPanel(); // 하단 컨테이너
// 1. 컴포넌트를 만들어 보자
// 1-1. 상단-1 컨테이너에 들어갈 컴포넌트를 만들자.
JLabel jl1 = new JLabel("이 름 : ");
JTextField name = new JTextField(10);
// 1-2. 상단-2 컨테이너에 들어갈 컴포넌트를 만들자.
JLabel jl2 = new JLabel("국어 : ");
JTextField kor = new JTextField(3);
JLabel jl3 = new JLabel("영어 : ");
JTextField eng = new JTextField(3);
JLabel jl4 = new JLabel("수학 : ");
JTextField mat = new JTextField(3);
// 1-3. 가운데 들어갈 컴포넌트를 만들자.
JTextArea jta = new JTextArea(5, 20);
JScrollPane jsp = new JScrollPane(
jta,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
jta.setLineWrap(true); // 자동으로 줄바꿈을 해주는 메서드
// 1-4. 하단 컨테이너에 들어갈 컴포넌트를 만들자.
JButton button1 = new JButton("계 산");
JButton button2 = new JButton("종 료");
JButton button3 = new JButton("취 소");
// 컴포넌트를 컨테이너레 올려 주어야 한다.
// 2-1. 상단-1 컨테이너에 올라갈 컴포넌트를 올려 주자.
container1.add(jl1); container1.add(name);
// 2-2. 상단-2 컨테이너에 올라갈 컴포넌트를 올려 주자.
container2.add(jl2); container2.add(kor);
container2.add(jl3); container2.add(eng);
container2.add(jl4); container2.add(mat);
// 2-3. 하단 컨테이너에 올라갈 컴포넌트를 올려 주자.
container3.add(button1);
container3.add(button2);
container3.add(button3);
// 새로운 컨테이너를 하나 더 만들자.
JPanel group = new JPanel(new BorderLayout()); // 여분 컨테이너
// 여분 컨테이너에 기존의 컨테이너를 올려 주자.
group.add(container2, BorderLayout.NORTH);
group.add(jsp, BorderLayout.CENTER);
group.add(container3, BorderLayout.SOUTH);
// 3. 컨테이너를 프레임에 올려 주어야한다.
add(container1, BorderLayout.NORTH);
add(group, BorderLayout.CENTER);
setBounds(100, 100, 300, 300);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
// 4. 이벤트 처리를 하자
// 4-1. 계산버튼(button1)을 눌렀을 때 이벤트 처리 진행
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 1. 이름과 국어, 영어, 수학 점수를 받자.
String name1 = name.getText();
int kor1 = Integer.parseInt(kor.getText());
int eng1 = Integer.parseInt(eng.getText());
int mat1 = Integer.parseInt(mat.getText());
// 2. 총점을 구하자
int sum = (kor1 + eng1 + mat1);
// 3. 평균을 구하자
double avg = (sum / 3);
// 학점
String grade = "";
if(avg >= 90) {
grade = "A학점";
}else if(avg >= 80) {
grade = "B학점";
}
else if(avg >= 70) {
grade = "C학점";
}
else if(avg >= 60) {
grade = "D학점";
}
else {
grade = "F학점";
}
// 5. 성적 결과를 화면에 출력해 보자.
jta.append("이 름 : " + name1 + "\n");
jta.append("국어점수 : " + Integer.toString(kor1) + "점\n");
jta.append("영어점수 : " + Integer.toString(eng1) + "점\n");
jta.append("수학점수 : " + Integer.toString(mat1) + "점\n");
jta.append("총 점 : " + Integer.toString(sum) + "점\n");
jta.append("평 균 : " + String.format("%.2f", avg) + "점\n");
jta.append("학 점 : " + grade);
// 각각의 컴포넌트 초기화
name.setText(""); kor.setText("");
eng.setText(null); mat.setText(null);
name.requestFocus();
}
});
// 4-2. 종료버튼(button1)을 눌렀을 때 이벤트 처리 진행
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
// 4-3. 취소버튼(button3)을 눌렀을 때 이벤트 처리 진행
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 각각의 컴포넌트 초기화
name.setText(""); kor.setText("");
eng.setText(null); mat.setText(null);
jta.setText("");
name.requestFocus();
}
});
}
public static void main(String[] args) {
new Ex34_Event();
}
}'Java > 기초 내용 정리' 카테고리의 다른 글
| Java(IO)_01 (0) | 2024.11.11 |
|---|---|
| Java(GUI)_Event_35 (1) | 2024.11.08 |
| Java(Collection)_10 (1) | 2024.11.08 |
| Java(Collection)_09 (0) | 2024.11.08 |
| Java(Collection)_08 (0) | 2024.11.08 |