관리 메뉴

지구별에서 - Things Old and New

Swing 을 사용하는 Jogl 코드의 해설 본문

IT/JOGL(Java OpenGL)

Swing 을 사용하는 Jogl 코드의 해설

샛솔 2005. 12. 2. 05:19

Swing 을 사용하는 Jogl 코드의 해설

Swing 을 사용하는 Jogl 코드라고는 하지만 Swing 과 Jogl 의 통합이 아니라 Swing(lightweight component) 와 Awt(heavyweight component)의 통합이라는 표현이 합당할 것이다.  Awt 는 스크린에 직접 접근할 수 있으나 Swing 은 오직 상위계층인 awt 의 네이트브 리소스를 통해서만 스크린에 접근할 수 있다. 이런 연유로  Awt 는 중량급 컴포넌트, Swing 은 스크린의 네이티브 리소스를 거니리지 않는 경량급 컴포넌트라 부른다. 어것은 아래의 클래스 계층구조를 보면 잘 알 수 있다.

javax.swing
Class JFrame

java.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Windowjava.awt.Framejavax.swing.JFrame

위에서 보듯이 JFrame은 awt의 Frame의 하위 클래스로 Frame과 그 상위 awt 컴포넌트의 메쏘드를 빌려 네이티브 스크린 리소스에 접근하는 구조를 갖고 있다.  

 

 awt 와 Swing 의 다른점은

첫째는 awt의 Frame을 썼을 때에 사용한

                        JoglFrame  frame = new JoglFrame ();

                         frame.setVisible(true);

에 해당하는 부분이

   final JoglJFrame app = new JoglJFrame();

   SwingUtilities.invokeLater (new Runnable() {public void run() {app.setVisible(true);}});

  로서 window 가 update 될 때에도 다시 보이도록 한다.

 둘째는 awt의 Frame을 썼을 때에 사용한

                addWindowListener(new WindowAdapter() {

                        public void windowClosing(WindowEvent e) {

                        if (anim != null) anim.stop();  

                        System.exit(0);

                        }

에 24째 줄의

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

로 바꿔 주는 것이다.

나머지 것은 거의 awt 의 컴포넌트를 쓰는 방식과 대동 소이함으로 생략한다.

경량급 컴포넌트(Swing)와 중량급 컴포넌트(Awt) 섞어쓰기에 관해서는

http://java.sun.com/products/jfc/tsc/articles/mixing/

를 참조하고

JFrame의 구조에 대해서는 아래의 참고 문헌

http://www.cc.gatech.edu/classes/cs4812_99_winter/swing/sld014.htm

을 참조하기 바란다.

'IT > JOGL(Java OpenGL)' 카테고리의 다른 글

왜 도둑질이 나쁜가?  (4) 2005.12.27
인터넷은 쓰레기인가?  (2) 2005.12.25
Jogl에서 KeyEvent 쓰는 법  (0) 2005.12.06
Jogl에서 MouseEvent 쓰는 법  (0) 2005.12.05
Jogl을 JApplet 에 담는 법  (0) 2005.12.04
Jogl을 Applet에 담는 법  (0) 2005.12.03
Jogl 과 Swing  (0) 2005.12.01
JOGL  (0) 2005.12.01
Comments