-
JAVA | AWT & Swingprogramming/JAVA 2020. 6. 2. 23:24
GUI 응용프로그램
GUI란 Graphical User Interface의 약자로 이미지 혹은 그래픽을 이용하여 메뉴 등을 포함하는 화면을 구성하고, 키보드 외 마우스 등의 편리한 입력 도구를 이용하여 사용자가 입력을 편리하게 사용 할 수 있도록 작성하는 인터페이스 !
자바는 AWT 와 Swing 패키지를 제공하여 다양한 모양으로 쉽게 GUI를 구성하도록 해준다.
AWT ( Abstract Window Toolkit) 와 Swing
AWT는 해당 시스템에서 실행될 시 해당 컴포넌트를 사용하는 GUI이다.
즉, 운영체제가 제공하는 자원을 사용한다는 의미이다. 예를 들면 윈도우에서 버튼을 만들었다면 윈도우 시스템이 제공하는 모양의 버튼이 나온다. 자바 초기버전에 제공되던 GUI이다.
AWT의 문제점 ! 컴포넌트가 플랫폼에 종속적이기 때문에 실행되는 플랫폼에 따라 컴포넌트의 모습이 달라진다. 그래서 AWT는 운영체제마다 지원해주는 모양이 달라 일관된 화면을 보여주지 못하게 된다.
Swing은 AWT기술을 기반으로 작성된 라이브러리로 AWT와 달리 순수하게 자바 언어로 작성되어있다.
자바에서 지원을 해주는 것이기 때문에 어디서든 동일한 모양을 나타내 다른 운영체제라도 일관된 화면을 보여줄 수 있다.
Swing컴포넌트의 이름은 AWT컴포넌트와 구분하기 위해 모두 대문자 Java의 앞글자를 딴 J로 시작한다.
ex) AWT에서 button으로 사용한다면 Swing에서는 Jbutton으로 사용한다.
*화면이 일관적이기 때문에 현재는 AWT보다 Swing사용을 권장하는 편이다.
특징 AWT Swing 무게 중량 컴포넌트
(Heavy-weight Component
컴포넌트를 운영체제의 GUI와 연결시키므로 운영체제에 따라 다른 모양과 배치가 나타난다.)경량 컴포넌트
(Light-weight Component
운영체제가 제공하는 컴포넌트를 사용하지 않고 직접 컴포넌트를 만들어 구현한다.)패키지 java.awt.*; javax.swing.*; 장점 각 운영체제에서 구현하는 것이 쉽다. 운영체제의 자원을 빌리지 않고 직접 화면에 그리기 때문에 운영체제간에 발생한 버그를 자동적으로 해결한다.
발생하더라도 자바가상머신에서 해결 가능하다.단점 운영체제에 따른 미묘한 버그가 발생한다.
불규칙한 컴포넌트의 모양과 레이아웃 설정문제가 발생한다.실행 속도가 느려진다. 실행시 메모리를 많이 차지한다.
: JDK1.4부터 보완함Swing 프레임
Swing 프레임은 모든 Swing컴포넌트를 담는 최상위 컨테이너이다.
프레임이 있어야 GUI 화면이 출력 가능하며 프레임 내에 부착된 모든 컴포넌트들(Button,textField,CheckBox 등등)이 화면에 출력된다.
프레임을 만드는 두 가지 방법이 있다.
1) JFrame 객체를 직접 생성하는 방법
public class mainClass { public static void main(String[] args) { JFrame j = new JFrame(); } }
: 단순하지만 프레임에 Swing컴포넌트를 추가하는 과정이 불편하며 확장성, 융통성이 결여되는 단점이 있어 권장되지 않는다.
2) JFrame 클래스를 상속받는 방법
public class MyFrame extends JFrame{ }
: MyFrame 클래스를 따로 만들어서 JFrame을 상속 받은 후에
public class mainClass { public static void main(String[] args) { MyFrame mf = new MyFrame(); } }
: main() 메소드 안에서 Frame을 상속받은 클래스의 인스턴스를 생성하여 사용한다. 가독성 측면에서 첫번째 방법보다 좋으며 확장성, 융통성이 뛰어나다.
참고: https://diaryofgreen.tistory.com/140
,https://junhpgh.tistory.com/entry/AWT%EC%99%80-Swing%EC%9D%98-%EC%B0%A8%EC%9D%B4,
http://blog.naver.com/PostView.nhn?blogId=1stwook&logNo=220138459087
'programming > JAVA' 카테고리의 다른 글
JAVA | 네트워킹 (Networking) (0) 2020.06.05 JAVA | Applet (애플릿) (0) 2020.06.03 JAVA | 스레드(Thread) (0) 2020.05.30 JAVA | 인터페이스와 추상 클래스 (0) 2020.05.26 JAVA | 추상 클래스 (0) 2020.05.26