반응형
이 문제는 직접 타이핑해보고 왜 그런지 주석만 남겨놓았습니다.
그리고 버튼이 계속 출력안되길래 왜그런가 했더니 panel을 frame에 추가를 안해놨더라고요. 별 것 아니지만
사소한 실수 하나가 결과를 완전히 바꿔놓으니, 사소한 실수라도 주의해야겠습니다.
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 | import java.awt.BorderLayout; import java.awt.Dimension; 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.JPanel; import javax.swing.JTextField; //JFrame의 상속과 ActionListener를 구현한 클래스이다. public class KeyPad extends JFrame implements ActionListener { private JTextField txt; private JPanel panel; public KeyPad() { // JTextField의 길이를 20으로 설정하였다. txt = new JTextField(20); // Frame에 바로 TextField를 붙이는데, 이때 layout 설정도 들어간다. add(txt, BorderLayout.NORTH); // panel 객체 생성하고 이 역시 layout 설정을 해준다. panel = new JPanel(); panel.setLayout(new GridLayout(3, 3)); add(panel,"South"); // 반복문을 통해서 각 button의 이름과 listener에 연결해준다. // 또한 사이즈도 같이 조정해주고 바로 panel에 붙여준다. for (int i = 1; i <= 9; i++) { JButton btn = new JButton("" + i); btn.addActionListener(this); btn.setPreferredSize(new Dimension(100, 30)); panel.add(btn); } // 윈도우를 보기 편하게 정리해주는 method이다 pack(); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) { // getActionCommand() 다시 말해 이벤트소스(button 등)의 // 대표값(button에 설정된 문자열값. 여기서는 숫자 )을 반환해준다. String actionCommand = e.getActionCommand(); txt.setText(txt.getText() + actionCommand); } public static void main(String[] args) { KeyPad f = new KeyPad(); } } | cs |
반응형
'It Study > POWER JAVA(기본서)' 카테고리의 다른 글
POWER JAVA 10장 예제 10-3 자동차 움직이기 (주석) (0) | 2022.11.03 |
---|---|
POWER JAVA 10장 Lab1 가위,바위,보 게임 (주석) (0) | 2022.11.02 |
POWER JAVA 9장 프로그래밍 1번 문제 ~2번 문제 (0) | 2022.11.01 |
POWER JAVA 8장 프로그래밍 1번 문제 ~ 5번 문제 (0) | 2022.10.29 |
POWER JAVA 8장 mini project 글자 추측 게임(행맨 게임) (2) | 2022.10.27 |