[네트워크 프로그래밍2]스윙 GUI 프로그램 만들기(프레임에 스윙 컴포넌트 붙이기)

류명운

·

2015. 9. 18. 21:53

반응형

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


이번 포스팅에서는 앞서 "[2강] 스윙 GUI 프로그램 만들기(프레임 만들기)" 포스팅에서 만들어본 스윙 프레임에 컴포넌트를 붙이는 부분에 대하여 살펴보고 공부하도록 하겠습니다.



프레임에 컴포넌트 붙이기


프레임은 앞서 2강 포스팅에서 배웠듯이 응용프로그램을 구성하는 외곽 틀입니다. 스윙을 이용하여 작성된 GUI프로그램은 이러한 프레임(틀) 안에 여러 스윙 컴포넌트를 부착하여 사용자에게 인터페이스를 제공하게 됩니다.


자 그럼 프레임 안에 여러 스윙 컴포넌트들을 부착하는 방법에 대하여 알아보도록 하겠습니다.


 타이틀 닫기

  - 프레임에 타이틀을 달기 위해서는 다음과 같이 JFrame 클래스의 생성자를 이용하거나 JFrame 클래스의 setTitle() 메소드를 이용합니다.

 JFrame frame = new JFrame("타이틀문자열"); //JFrame의 생성자에 타이틀 달기

 frame.setTitle("타이틀문자열"); //JFrame의 setTitle() 메소드를 이용하는 방법


 메뉴 붙이기

  - 메뉴를 붙이기 위해서는 메뉴바, 매뉴, 메뉴 아이템을 만들고, 메뉴바를 JFrame의 메뉴바 영역에 붙입니다.


 컨텐트팬에 컴포넌트 달기

  - 스윙에서는 컨텐트팬(content pane)에만 컴포넌트를 부착할 수 있습니다. 컨텐트팬은 JFrame 객체가 처음 생길 때 자동으로 생성됩니다. 컨텐트팬을 알아내기 위해서는 다음과 같은 코드를 이용하면 됩니다.

 JFrame frame = new JFrame();

 Container contentPane = frame.getContentPane(); //프레임에 연결된 컨텐트팬을 알아낸다. 


 컨텐트팬의 변경

 - JFrame의 생성 당시 붙어 있는 컨텐트팬을 제거하고 컨텐트팬을 새로 만들어서 붙일 수 있습니다. 컨텐트팬은 Container 타입이므로 Container를 상속받은 어떤 컴포넌트도 컨텐트팬이 될 수 있습니다. 다음 예는 JPanel을 상속받은 MyPanel을 컨텐트팬으로 붙이는 예입니다. *^^*

 class MyPanel extends JPanel {

   // JPanel을 상속받은 패널을 구현한다.

 }


 frame.setContentPane(new MyPanel()); //프레임의 컨텐트팬을 MyPanel 객체로 변경



아직까지 전혀 감이 안오시는 분들을 위해 예제 하나 살펴보고 가겠습니다.*^^*


ex) 컴포넌트를 가진 프레임 만들기


Q. 다음 그림과 같이 JFrame의 컨텐트팬을 알아내어 배경색을 오렌지색으로 하고, 이곳에 OK, Cancel, Ignore의 세 버튼을 부착한 스윙 프로그램을 작성해보자.

 

 


Java Source

import javax.swing.*;

import java.awt.*;


public class ContentPaneEx extends JFrame {

ContentPaneEx() {

setTitle("ContentPane과 JFrame"); //프레임의 타이틀 달기

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //프레임 윈도우를 닫으면 프로그램 종료

Container contentPane = getContentPane(); //컨텐트 팬을 알아낸다.

contentPane.setBackground(Color.ORANGE); //오렌지색 배경 설정

contentPane.setLayout(new FlowLayout()); //컨텐트팬에 FlowLayout 배치관리자 달기

contentPane.add(new JButton("OK")); //OK 버튼 달기

contentPane.add(new JButton("Cancel")); //Cancel 버튼 달기

contentPane.add(new JButton("Ignore")); //Ignore 버튼 달기

setSize(350, 150); //프레임 크기 300 X 150 설정

setVisible(true); //프레임을 화면에 출력

}


public static void main(String[] args) {

new ContentPaneEx();

}

}



 스윙 응용프로그램의 종료

 - 자바에서 프로그램을 종료하기 위해서는 어떤 상황에서나 다음의 문장을 사용한다.


 System.exit(0); //자바 프로그램을 종료한다.


 - 사용자는 스윙 프로그램을 종료하기 위해 프레임 윈도우의 오른쪽 상단에 있는 '프레임 종료 버튼(x)'을 클릭할 수도 있다. 하지만 '프레임 종료 버튼(x)'을 클릭하면 프레임 윈도우만 닫아질 뿐 프로그램이 종료되지는 않는데 따라서 해당 버튼이 클릭되었을 때 프로엠 윈도우와 함께 프로그램도 종료시키고자 한다면 다음 코드를 삽입하여야 한다.


 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //프레임이 닫힐 때 프로그램도 함께 종료한다.


여기까지 하여 이번 포스팅에서는 프레임에 스윙 컴포넌트를 붙이는 방법에 대하여 살펴보고 공부하였습니다. 어떻게 조금 이해가 되시는지요?. 저도 자바 교재를 참고하며 포스팅을 작성하는데 최대한 이해가 쉽게 순서를 맞추려하는데 잘 안되네요..


하여튼 다들 공부할 수 있다는 환경이 주어진 것에 감사하고 시간을 허비하지 말아 공부에 열심을 더합시다 ! 다음 포스팅에서는 마지막으로 main을 작성하는 방법과 기능에 대하여 알아보도록 하겠습니다ㅎㅎ




반응형