자바 GUI (그래픽 유저 인터페이스) 프로그래밍 [1]
많은 개발자분들이 자바 언어를 사용하시는 경우가 많을 것이라고 생각하는데요.
자바 언어를 활용하여 콘솔 창에서 다양한 프로그램을 작성해본 경험은 있어도 GUI 프로그래밍을 해본적은 없는 분들을 위해서 간단한 GUI 프로그래밍 방법에 대해서 소개해드리고자 합니다. 자바 언어를 아주 간단히 사용해본 적이 있으신 분들에 대해서 읽어보시면 좋을 듯합니다.
자바는 GUI 프로그래밍을 위해 2가지 패키지를 제공하고 있습니다.
- abstract windows kit (AWT)
- swing toolkit
AWT가 기존의 것이고, swing toolkit이 더 새로운 것입니다. Swing 패키지에서 제공하는 프레임들은 기존 AWT가 제공하는 프레임들과 구별하기 위해서 JFrame과 같은 클래스 이름을 사용하고 있습니다. (AWT에서 제공하는 프레임 클래스는 Frame) 즉, 맨 앞에 J를 붙여줌으로써 Swing 패키지에서 제공하고 있음을 병시하는 것입니다.
표시가능한 프레임들은 JWindows, JDialog, JApplet과 같은 최상 수준의 컨테이너들이고,
표시되지 않는 컨텐츠 틀들은 JPanel, JoptionsPane, JScrollPane, JSplitPane들과 같은 중간 수준의 컨테이너들입니다.
(최상 수준, 중간 수준이라는 말은 고수준-저수준의 용어의 맥락에서 생각하시면 편합니다. 수준이 높을수록 좋은게 아니고, 사람과 더 가까이 있다는 것을 의미합니다. 즉, 눈에 보이는 컨테이너들이 최상 수준이고, 눈에 보이지는 않지만 작동하고 있는 것들이 중간 수준, 혹은 저수준이라고 말할 수 있는 것이지요)
여기서 컨테이너란 위젯들을 말하거나 다른 위젯들을 관리하고 처리하는 GUI 컨트롤들을 말합니다.
위젯들은 간단히 말해 텍스트 박스, 체크 박스, 버튼 같은 GUi 컴포넌트를 말하는 것이구요.
(두 개가 큰 차이가 있다기 보단 위젯이 더 작은 구성요소, 그것을 그룹화하고 관리하는 것이 컨테이너라고 말할 수 있습니다.)
아래는 자바를 관리하는 썬에서 제공하는 그림입니다.
여기서 중요한 것은 위젯을 추가하여 GUI 컨트롤을 보여주려면, 그것을 Content Pane에 추가해야 한다는 것입니다.
충분히 기본적인 지식은 다 쌓았다고 생각이 듭니다.
자, 이제 다음 가장 간단한 GUI 예제를 보시면 되겠습니다.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Frame1 extends JFrame
{
JPanel pane = new JPanel();
Frame1()
{
super("Empty Simple Frmae");
setBounds(100,100,300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container con = this.getContentPane();
con.add(pane); // add the panel to content pane
/* customize panel here */
setVisible(true);
}
public static void main(String args[])
{
Frame1 frame = new Frame1();
}
}
중간 수준에서 위젯들을 그룹화하고 처리할 (물론 이 예제에서는 딱히 처리할 위젯이나 GUI 컨트롤이 없긴 하지만) JPanel 클래스를 만들어줍니다. 그리고 이 Panel을 Content Pane에 추가합니다. 그 이후, 패널을 자유자재로 설정해주시고, setVisible(true)를 호출하면 간단한 GUI 프레임이 등장하는 것을 보실 수 있으실 겁니다.