[JAVA] 이 소스에 대해 아시는분 좀 알려주삼

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4.  
  5. public class TwoButtons {
  6.         JFrame frame;
  7.         JLabel label;
  8.  
  9.         public static void main (String[] args) {
  10.                 TwoButtons gui = new TwoButtons();
  11.                 gui.go();
  12.         }
  13.  
  14.         public void go() {
  15.                 frame = new JFrame();
  16.                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  17.  
  18.                 JButton colorButton = new JButton("change color");
  19.                 colorButton.addActionListener(new ColorListener());
  20.  
  21.                 JButton labelButton = new JButton("change Label");
  22.                 labelButton.addActionListener(new LabelListener());
  23.  
  24.                 label = new JLabel("I'm a label");
  25.                 MyDrawPanel drawPanel = new MyDrawPanel();
  26.  
  27.                 frame.getContentPane().add(BorderLayout.SOUTH, colorButton);
  28.                 frame.getContentPane().add(BorderLayout.CENTER, drawPanel);
  29.                 frame.getContentPane().add(BorderLayout.EAST, labelButton);
  30.                 frame.getContentPane().add(BorderLayout.WEST, label);
  31.  
  32.                 frame.setSize(300,300);
  33.                 frame.setVisible(true);
  34.         }
  35.  
  36.         class LabelListener implements ActionListener {
  37.                 public void actionPerformed(ActionEvent event) {
  38.                         /*
  39.                         int num = (int) (Math.random() * 255);
  40.                         String strNum = Integer.toString(num);
  41.                         label.setText(strNum);
  42.                         */
  43.                         label.setText("AC");
  44.                 }
  45.         }
  46.  
  47.         class ColorListener implements ActionListener {
  48.                 public void actionPerformed(ActionEvent event) {
  49.                         frame.repaint();
  50.                 }
  51.         }
  52. }

    위의 소스를 1번 소스라고 했을때 LabelListener 이라는 내부클래스의 기존 주석(38~42번줄)을 제거하고 43번줄에
    주석처리를 한것을 2번 소스라고 하겠다.

1번 소스를 실행시켜보고 느낀 문제점!

- 1번소스의 상태일때 실행한후 라벨을 바꾸는 버튼을 눌렀을경우 라벨만이 바뀔 것이라 생각했지만
그림까지도 변경되는 것을 확인 할 수 있다.
Change Label 버튼의 용도는 라벨을 바꾸는 용도인데 어째서 그림까지 바뀌는 건가?

그 외...

2번 소스를 실행시켜보고 느낀 의문점!

- 1번소스의 Change Label 버튼의 이벤트는 일회성으로 끝나는데 2번소스의 경우는 Change Label 버튼의
이벤트가 반복적으로 발생한다.(클릭할때마다 라벨도 그림도 바뀐다.)

으흠... 난 이거 왜 이러는지 모르겠다.

자바 전문가님들! 좀 알려주세요~

참고! 위 소스는 Head First Java 413page의 소스이다.

TwoButtons.java 소스파일

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by devfuner | 2009/09/19 14:47 | JAVA | 트랙백 | 덧글(1)

트랙백 주소 : http://devfuner.egloos.com/tb/4527794
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by devfuner at 2009/09/19 14:59
이글루스에 소스 깔끔하게 올리는 법 아시는 분은 좀 알려주세요 ^^

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶