[네트워크 프로그래밍2]스윙 GUI 프로그램 만들기(프레임 만들기)

류명운

·

2015. 9. 18. 20:53

반응형

안녕하세요! 자바 네트워크프로그래밍 2번째 포스팅을 시작하겠습니다~



스윙으로 GUI 응용프로그램을 만들기 위해서는 크게 다음의 세 과정이 필요하게됩니다.

 1. 프레임 만들기

 2. 프레임에 스윙 컴포넌트 붙이기

 3. main() 메소드 작성


이중 이번 포스팅에서는 스윙 패키지를 사용하여 실제 프레임을 만드는 부분에 대해 살펴보고 공부하도록 하겠습니다.


자 그럼 실제 프로그램을 작성해보도록 하겠습니다.


 가장 먼저, 프레임을 만들기 전에 꼭 해주어야할 일이 있는데 그건 바로 이전 포스팅에서 배웠듯이 스윙 패키지를 사용하기 위해 선언해야될 import문 입니다.


스윙 패키지를 이용하기 위해서는 다음과 같이 스윙 컴포넌트의 클래스 파일들이 존재하는 경로명인 javax.swing.*를 반드시 import해주어야 합니다


import javax.swing.*; 


* 이 외에도 자바 GUI 프로그램은 다음과 같은 import문들이 사용됩니다.


import java.awt.*;                //그래픽 처리를 위한 클래스들의 경로명

import java.awt.event.*;         //AWT 이벤트 사용을 위한 경로명

import javax.swing.*;            //스윙 컴포넌트 클래스들의 경로명

import javax.swing.event.*;     //스윙 이벤트를 위한 경로명



스윙 프레임


스윙 프레임이란? 모든 스윙 컴포넌트들을 담는 최상위 컨테이너(Top Level Container)입니다. 프레임이 있어야 GUI 화면 출력이 가능하며 프레임 내에 부착된 모든 컴포넌트들이 화면에 출력됩니다. 따라서 컴포넌트들은 프레임 없이 독립적으로 화면에 출력될 수 없으며, 프레임이 닫히면 프레임 내의 모든 컴포넌트들도 사멸되고 프레임과 함께 화면에서 사라지게 됩니다.


  스윙에서 이러한 프레임 역할을 하는 클래스는 JFrame 클래스입니다.

생성된 JFrame 객체는 다음 그림과 같이 Frame(java.awt.Frame), 메뉴바(Menu Bar), 컨텐트팬(Content Pane)3공간으로 구성되게 됩니다.



 1) Frame(java.awt.Frame)

  - AWT 패키지에 있는 클래스로서 JFrame이 java.awt.Frame을 상속받기 때문에 당연히 존재하게 된다.


 2) 메뉴바(Menu Bar)

  - 메뉴들을 부착하는 공간으로 사용된다.


 3) 컨텐트팬(Content Pane)

  - 메뉴를 제외한 모든 GUI 컴포넌트들을 부착하는 공간으로 사용된다.


 이렇듯, 응용프로그램 개발자는 메뉴를 만들어 JFrame의 메뉴바 공간에 부착하고, 사용자 인터페이스를 구축하기 위해 컴포넌트를 생성하여 컨텐트팬에 부착하여 GUI 프로그램을 개발하게 됩니다.*^^* 다음으로 실제 스윙 프레임을 만드는 법에대하여 알아보겠습니다.



스윙 프레임 만들기: 프레임을 만드는 방법에는 크게 다음 두 가지가 존재합니다



 방법1JFrame 객체를 직접 생성하는 방법

  

  JFrame 객체를 직접 생성하는 경우는 방법2에 비해 개발하기 단순하다는 장점이 있지만 권장되지는 않습니다. 프레임에윙 컴포넌트를 추가하는 과정이 불편하며 확장성, 융통성이 결여되는 단점이 있기 때문입니다.


다음은 사용 방법입니다.


 - main() 메소드에서 다음과 같이 JFrame 객체를 직접 생성합니다.

JFrame f = new JFrame();  //JFrame 객체 생성


 - 그리고 다음과 같이 생성한 프레임 f에 타이틀을 달거나 크기를 설정하여 줍니다.

 f.setTitle("첫번째 프레임");  //프레임의 타일틀을 "첫번째 프레임"으로 설정됨

 f.setSize(300, 300);         //폭 300픽셀, 높이 300픽셀 크기로 프레임 크기 설

 f.setVisible(true);            //프레임이 화면에 나타나도록 설정, false의 경우 프레임이 숨겨짐



 방법 2) JFrame 클래스를 상속받는 방법(권장하는 방법)


 JFrame을 상속받아 다음과 같이 MyFrame 클래스를 만듭니다.

 public class MyFrame extends JFrame {

 ..........................................................

 }


 다음으로 main() 메소드에서 다음과 같이 위에서 JFrame을 상속받은 클래스의 인스턴스를 생성하면 됩니다.*^^*

 MyFrame mf = new MyFrame();


 MyFrame 객체, 즉 프레임이 생성되면 프레임은 사용자의 입력을 받고 처리하는 등 스스로 동작하게 됩니다. main()의 기능은 프레임 객체를 생성하는 것으로 끝이나게 됩니다. 개발자는 MyFrame() 생성자에 필요한 코드를 마음대로 추가할 수 있다는 장점이 있어 가독성(readability)의 측면에서 첫 번째 방법보다 나으며 또한, MyFrame 클래스에 마음대로 메소드를 추가할 수 있기 때문에 확장성, 융통성이 뛰어나게 됩니다. 스윙 GUI프로그램을 작성하기 위해 프레임을 작성하는 방법에는 이 방법을 더 권장하는 이유입니다.


[두 방법간의 장/단점 비교 표]


 장점

 단점  

 JFrame 객체를 직접 생성 

 개발하기에 단순함.

 프레임에 스윙 컴포넌트를 추가하는 과정이 불편하며 확장성, 융통성이 결여 됨

 JFrame 클래스를 상속

 개발자는 JFrame 클래스를 상속받은 클래스의 생성자에 필요한 코드를 마음대로 추가할 수 있으며, 메소드를 마음대로 추가할 수 있기에 가독성, 확상성, 융통성이 뛰어 

 JFrame 객체를 직접 생성하는 방법보다는 약간 복잡함.




반응형