컴퓨터프로그래밍/JAVA

java - 34.SWING

zelkova 2011. 8. 4. 13:59

AWT? SWING?
AWT와 SWING은 무슨차이냐는 궁금점이 생길 것이다. 간단히 말하면 SWING은 AWT의 발전형이다.
Java 에서는 GUI를 지원하기위해 AWT 관련 객체(이벤트 소스, 이벤트 리스너 등)은 거의 비슷하다. 하지만 새로 추가된 GUI컴포넌트들과 이벤트와 이벤트 리스너도 추가되었다.

대표적인 예로 폼의 형태이다. 프레임 관점에서 룩앤필을 보여준 것으로 프래임외에 다른 GUI 컴포넌트들로 운영체제별로 다른 모양을 나타낸다. 운영체제별로 컴포넌트들이 바뀌면 사용자 입장에선 분명 당혹스러울 것이다. 이렇듯 개발된 GUI프로그램은 같은 프로그램을 어떤 운영체제에서 실행하느냐에 따라 룩앤필이 달랐다.

이러한 단점을 위해서 SWING이 추가된 것이다. AWT같은 경우는 C언어를 조합하여 구현하였기 때문에 C언어는 운영체제에 종속적인데 이로 인해 AWT로 만든 GUI프로그램은 일관된 룩앤필을 가질 수 없었다. 따라서 C언어로 구현된 기능들을 자바화 하느냐가 관건이었는데, 마침네 선마이크로시스템즈에서 SWING을 만들어내게 된 것이다.

AWT 인터페이스

 


SWING 인터페이스
 입체감이 있는 인터페이스 ^^. 조금더 보기좋게 되었죠?


AWT에서 확장된 SWING 컴포넌트
컴포넌트에 모두 J가 붙여졌다고 생각하면된다. JButton, JCheckbox, JPanel, JDialog 등등 모든 컴포넌트에 J를 붙여서 혼선을 줄여주었다. 물론 사용방법도 비슷하다.

 예제)
java 기초 29번 블로그에 menu,popup 메뉴와 비교해보면 쉬울 것이다. 변수명에 단지 j만 붙었다는 것을 알 수 있다.

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class EventSource extends JFrame{

JMenuBar jmenuBar;
JMenu fileJMenu;
JMenuItem newjMenu, openjMenu, closejMenu, savejMenu, saveAsjMenu, printjMenu,exitjMenu;
TextArea txtArea;
 
 public EventSource(){
  this.setTitle("");
  this.setSize(300,300);
  this.setVisible(true);
 
 
  newjMenu = new JMenuItem("새로만들기");
  openjMenu = new JMenuItem("열기");
  savejMenu=new JMenuItem("저장");
  saveAsjMenu=new JMenuItem("다름이름으로 저장");
  printjMenu=new JMenuItem("인쇄");
  exitjMenu=new JMenuItem("종료");
 
  fileJMenu = new JMenu("파일");
  fileJMenu.add(newjMenu);
  fileJMenu.add(openjMenu);
  fileJMenu.add(savejMenu);
  fileJMenu.add(saveAsjMenu);
  fileJMenu.add(printjMenu);
  fileJMenu.add(exitjMenu);
 
  jmenuBar=new JMenuBar();
  jmenuBar.add(fileJMenu);
 
  this.setJMenuBar(jmenuBar);
 
  this.setLayout(new BorderLayout());
  txtArea= new TextArea();
  this.add(txtArea, BorderLayout.CENTER);
 

 }

}


반응형