본문 바로가기
It Study/POWER JAVA(기본서)

POWER JAVA 10장 예제 11-3 사용자로부터 받은 정수의 제곱 계산(GUI)

by prlkt5200 2022. 11. 9.
반응형

label과 textField의 간단한 활용 예제입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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;
import javax.swing.JTextField;
 
public class TextFieldFrame extends JFrame {
    
    //버튼 및 텍스트필드의 참조변수
    private JButton button;
    private JTextField text, result;
 
    public TextFieldFrame() {
        
        //생성자 내부에서 프레임의 크기와 타이틀을 설정해주고
        //이너 클래스인 버튼 리스너 클래스의 객체를 생성해준다.
        setSize(300150);
        setTitle("제곱 계산하기");
        ButtonListener listener = new ButtonListener();
 
        //패널 객체 생성 
        JPanel panel = new JPanel();
        //패널에 레이블 객체 생성 후, 추가
        panel.add(new JLabel("숫자 입력"));
        
        //텍스트 필드 객체 생성 후 리스너와 이어준다.
        text = new JTextField("15");
        text.addActionListener(listener);
        //패널에 텍스트 필드 객체를 추가한다.
        panel.add(text);
        
        //동일하게 패널에 레이블 객체 생성 후, 추가
        panel.add(new JLabel("제곱한 값"));
        
        //텍스트 필드 객체 생성해준 뒤, 값을 입력못하게 막아놓는다. 그리고 패널에 추가
        result = new JTextField(15);
        result.setEditable(false);
        panel.add(text);
 
        //버튼 객체 생성 후 리스너와 이어준다.
        //그리고 패널에 추가
        button = new JButton("OK");
        button.addActionListener(listener);
        panel.add(button);
        add(panel);
        
        //프레임 창이 보이고, 실행 종료시 완전히 작업 종료되게 한다.
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
 
    }
 
    //이벤트 처리를 위한 리스너 클래스이다.
    private class ButtonListener implements ActionListener {
        
        //액션 이벤트 처리를 위한 메소드이다.
        public void actionPerformed(ActionEvent e) {
            
            //e.getSource()로 불러온 이벤트소스(이벤트와 이벤트 객체를 발생시키는 소스)가 
            //버튼과 텍스트인 경우 조건문 내부 실행
            if (e.getSource() == button || e.getSource() == text) {
                
                //텍스트 필드에 입력된 내용을 불러와서 name 변수에 저장
                //그리고 그것을 정수로 변환한 뒤, 다시 int 변수에 저장
                String name = text.getText();
                int value = Integer.parseInt(name);
                
                //그리고 그 값을 제곱한 뒤 다시 텍스트필드에 고정시키고, 텍스트필드에 포커스를 주는 것으로 마무리
                result.setText(" " + value * value);
                text.requestFocus();
            }
        }
    }
 
    public static void main(String[] args) {
        new TextFieldFrame();
    }
 
}
 
cs
반응형