GUI


자바 GUI 실습을 진행하였다.

 

이론 설명과 같이 실습 과정을 설명해보겠다.

 

GUI 란 그래픽사용자인터페이스로, 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것이다. GUI 는 컴포넌트들로 구성되어 있다. 컴포넌트란 버튼이나, 텍스트필드나, 리스트나 체크박스 등등 을 의미한다.

 

 

자바는 GUI 기반의 응용프로그램 작성을 위해서 다양한 GUI 컴포넌트(GUI Component)를 제공한다.

GUI 컴포넌트는 AWT 컴포넌트와 Swing 컴포넌트로 구분되며,

이들은 각각 java.awt 패키지 javax.swing 패키지를 통해 사용할 수 있다.

 

java AWT java Swing
AWT 는 플랫폼에 의존적 스윙은 플랫폼에 독립적
AWT 컴포넌트는 용량 크다 스윙 컴포넌트는 용량이 가볍다
룩앤필 지원 X 룩앤필 지원 O
컴포넌트 개수 적음 컴포넌트 개수 많음
운영체제(OS)의 도움을 받아 화면에 출력되는데, 운영체제의 리소스를 많이 소모하여 운영체제에 부담을 줌
또한 AWT 컴포넌트는 운영체제에 의존적이므로 OS환경에 따라 다르게 구현될 수 있음.
 
운영체제에 도움을 받지 않고 구현되기 때문에 운영체제와 관계없이 동일하게 작동하며 동일한 모양으로 그려짐

 

 

 

실습으로는 프레임을 생성해볼 예정이다. 

JFrame 을 사용하여 프레임을 생성한다.

 

JFrame 은 java swing 클래스의 일부이며 구현되는 하나의 창이다.

따라서 import javax.swing.*;

을 통해 임포트하면 사용할 수 있다.

 

 

package Lab3;
import javax.swing.*;

public class FrameTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		JFrame f = new JFrame("Frame Test");
		f.setTitle("My Frame");
		f.setSize(300, 200);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

}

우선 프레임 생성은 프레임 객체를 생성한다.

JFrame f = new JFrame();  을 통해 생성한다.

그 후 타이틀, 사이즈를 정해준다.

f.setTitle("타이틀이름") //타이틀 이름

f.setSize(300,200); // 사이즈 정하기 width, height

 

여기서 해당 객체의 Visible 을 true 로 해야 객체가 화면에 나타나게 된다.

f.setVisible(true);

 

 

이 코드에서 주목할 점은 main() 이 종료되어도 MyFrame 객체가 종료되지 않는다는점이다. main 은 끝났는데도 내가 생성한 myframe 창은 없어지지 않는다. 그 이유는 자바 스윙에서 JFrame 객체를 만들면 윈도우를 담당하는 새로운 스레드가 하나 생성되는데 , 이 스레드는 독립적으로 실행되는 코드이다. 따라서 main() 이 종료되더라도 윈도우는 없어지지 않는다.

 

이것은

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

를 사용하는 이유기도하다. 자동으로 종료되지 않으므로 close 버튼을 눌렀을 때 종료되도록 해야한다.

 

 

 

 

Layout


이번에는 Layout을 설정해보자

Layout 이란 쉽게 말하면 컴포넌트를 배치하는 방법이다.

여러 컴포넌트들을 어떻게 프레임안에 담을지에 대해 고민해보자. 일렬로 늘어놓을 수도, 카드처럼 늘어놓을수도, 딱딱 정리해서 넣을수도 있다. 

컨테이너에서 이러한 컴포넌트들의 위치와 크기를 결정하는 작업을 LayoutManager (배치관리자)를 통해 수행한다.

 

 

 

 

 

다음 실습으로는 버튼 컴포넌트를 추가할 것인데 이때 FlowLayout 을 사용할 것이다.

 

Layout 설정을 위해선 setLayout(new FlowLayout());

을 사용한다.

setLayout() 메소드에 레이아웃 객체를 인자로 넣어주는 것이다.

 

package Lab3;
import javax.swing.*;
import java.awt.FlowLayout;

public class MyFrame extends JFrame{

	
	public MyFrame() {
		setSize(300,200);
		setTitle("MyFrame");
		
		setLayout(new FlowLayout());
		JButton button = new JButton("버튼");
		add(button);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame f = new MyFrame();

	}

}

 

FlowLayout 사용을 위해 setLayout(new FlowLayout()); 을 사용한다. 해당 프레임의 레이아웃을 FlowLayout 로 설정하겠다는 의미이다. 

 

버튼 생성을 위해 JButton button = new JButton("버튼") 을 통해 
"버튼" 이라는 이름을 가진 버튼 객체를 만든다.

 

add(button) 은 해당 컴포넌트를 프레임에 추가하는 메소드이다.

JFrame 클래스를 상속받았으므로 사용가능한 메소드이다.

 

 

 

 

 

728x90

+ Recent posts