개발 및 관리/Java2013. 2. 19. 12:53 posted by HighLighter
반응형
paint(Graphics g) 메소드는 프레임의 디스플레이 이벤트에 의해 JVM으로 부터 호출되며 호출 시점은 프레임이 다시 화면에 그려질 때이다. 화면에 다시 그려져야 할 때는 프레임의 사이즈 변경(사이즈 증가만)과 프레임이 다른 프레임에 가려져 있다가 다시 다른 프레임보다 앞에 위치 할 때이다. 순서 상으로 생성자는 클래스의 인스턴스 생성시에 발생되므로 생성자가 paint()보다 먼저 호출되고 그 후에 앞에 명시된 이벤트가 발생했을 때에 paint메소드가 호출된다.
즉, paint()는 직접 호출하지 않아도 AWT쓰레드에 의해서 자동적으로 호출된다. AWT쓰레드는 GUI 어플리케이션을 실행하면 자동적으로 생성되는 데몬 쓰레드로 평소에는 대기상태에 있다가 화면이 갱신되어야할 상황이 발생되면, paint() 또는 update()를 호출해서 화면이 다시 그려지도록 한다. AWT쓰레드에 의해 자동적으로 화면이 갱신되는 상황은 아래와 같다.
1. 처음 화면에 나타날 때
2. 다른 화면에 가려져 있던 부분이 다시 화면에 나타날 때
3. 아이콘화 되어 있다가 원래 크기로 화면에 나타날 때
repaint() - AWT쓰레드에게 화면을 갱신할 것을 요청한다. AWT쓰레드는 0.1초마다 확인해서 요청이 있으면 update()를 호출한다.
update(Graphics g) - 화면을 지우고 paint(Graphics g)를 호출한다.
// ComponentListener의 메서드 public void componentMoved(ComponentEvent ae) {} public void componentHidden(ComponentEvent ae) {} public void componentResized(ComponentEvent ae) {} public void componentShown(ComponentEvent ae) {}
// MouseMotionListener의 메서드 public void mouseDragged(MouseEvent me) {} public void mouseMoved(MouseEvent me) {}
// MouseListener의 메서드 public void mousePressed(MouseEvent me) {} public void mouseReleased(MouseEvent me) {} public void mouseEntered(MouseEvent me) {} public void mouseExited(MouseEvent me) {} public void mouseClicked(MouseEvent me) {}
// MouseWheelListener의 메서드 public void mouseWheelMoved(MouseWheelEvent e) {}
// KeyListener의 메서드 public void keyPressed(KeyEvent ke) {} public void keyReleased(KeyEvent ke) {} public void keyTyped(KeyEvent ke) {}
// TextListener의 메서드 public void textValueChanged(TextEvent te) {}
// FocusListener의 메서드 public void focusGained(FocusEvent fe) {} public void focusLost(FocusEvent fe) {}
// ItemListener의 메서드 public void itemStateChanged(ItemEvent ie) {}
// AdjustmentListener의 메서드 public void adjustmentValueChanged(AdjustmentEvent ae) {}
// WindowListener의 메서드 public void windowClosing(WindowEvent we) {} public void windowOpened(WindowEvent we) {} public void windowIconified(WindowEvent we) {} public void windowDeiconified(WindowEvent we) {} public void windowClosed(WindowEvent we) {} public void windowActivated(WindowEvent we) {} public void windowDeactivated(WindowEvent we) {}
// WindowFocusListener의 메서드 public void windowGainedFocus(WindowEvent e) {} public void windowLostFocus(WindowEvent e) {}
// WindowStateListener의 메서드 public void windowStateChanged(WindowEvent e) {}
// ContainerListener의 메서드 public void componentAdded(ContainerEvent ce) {} public void componentRemoved(ContainerEvent ce) {} } // End of EventHandler class