본문 바로가기

JAVA

Swing

 컨테이너와 컴포넌트

 

 컨테이너 : 여러 컴포넌트를 하나로 묶어서 부착 가능한 객체
                 프레임과 패널을 주로 사용
                 JFrame 클래스와 JPanel 클래스로 구현


 컴포넌트 : 화면을 구성하는 각각의 요소
                 버튼, 체크박스, 라디오 버튼, 텍스트 필드, 텍스트 에어리어 등
                 컨테이너에 부착하여 사용
                 각 컴포넌트에서 사용자로부터 어떤 동작이 발생하면 해동 동작을 처리하는 이벤트 처리 필요


 최상위 컨테이너
    다른 컨테이너에 포함되지 않고도 화면에 출력되며 독립적으로 존재 가능한 컨테이너

 

 

< 창 생성하는 기본 문법 >
창(윈도우)을 생성하기 위해서는 Window 계열 개체 생성 필요
주로 JFrame 클래스를 사용
JFrame 객체를 생성하거나 JFrame 클래스를 상속받는 서브클래스를 정의하여 창 생성
class Ex1 extends JFrame {} 또는 JFrame f = new JFrame();

 

ex_swing.Ex1

package ex_swing;

import javax.swing.*;

public class Ex1 extends JFrame{
	
	public Ex1() {
		showFrame();
	}
	
	// 화면을 표시하는 기능을 수행할 showFrame 메서드 정의
	public void showFrame() {
		
		// JFrame 클래스를 상속받은 상태에서 프레임을 생성하는 경우
		// 현재 자신의 객체가 JFrame 객체이기도 하므로 JFrame 클래스의 메서드를 바로 호출
		// 가로 300픽셀, 세로 200픽셀 크기 설정
		setSize(800,600);
		
		// 위치 설정
		setLocation(100, 100);
		
		// 제목표시줄 타이틀 설정
		setTitle("JFrame을 상속받아 생성");
		
		// 닫기 버튼 설정
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		/*
		 * JFrame.XXX_ON_CLOSE 상수
		 * 1) EXIT_ON_CLOSE : 닫기 버튼 클릭 시 프로그램 종료(다른 창도 모두 닫힘)
		 *    => 현재 프로그램을 종료할 때 사용
		 * 2) DISPOSE_ON_CLOSE : 닫기 버튼 클릭 시 현재 창만 종료
		 *    => 다른 창의 작업은 유지한 채 현재 창의 작업만 종료할 때 사용
		 * 3) HIDE_ON_CLOSE : 닫기 버튼 클릭 시 현재 창 숨김
		 *    => 현재 창의 작업도 유지한 채 창을 숨기기만 할 때 사용
		 * 4) DO_NOTHING_ON_CLOSE : 닫기 버튼 클릭 시 아무 작업도 안함
		 */
		
		// 화면에 표시
		setVisible(true);
		
		// ===========================================================================
		
		// JFrame 객체를 직접 생성하여 프레임 생성
		JFrame f = new JFrame("JFrame 으로 생성한 프레임(생성자에 타이블 전달)");
		f.setSize(800,200);
//		f.setTitle("JFrame으로 생성한 프레임");
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
		
	}
	public static void main(String[] args) {
    
	    // Ex1() 클래스 인스턴스 생성
		new Ex1();
	}
}

 

ex_swing.Ex2

package ex_swing;

import java.awt.*;

import javax.swing.*;

public class Ex2 {

	public Ex2() {

		showFrame();

	}

	public void showFrame() {
		
		JFrame f = new JFrame("JFrame 생성 연습");
//		f.setSize(600, 400);
		
		// 크기를 지정하는 setSize() 메서드에 파라미터로 Dimension 객체 전달 가능하며
		// Dimension 객체 사용 시 크기를 지정하는 값을 관리할 수 있음
		// => 여러 컨테이너나 컴포넌트의 크기가 일정할 때 하나로 관리할 수 있음
		Dimension d = new Dimension(600,400);
//		f.setSize(d);
		
//		f.setLocation(600, 300);
		
		// 위치 좌표를 지정하는 Point 객체 전달 가능
		// Point 객체 사용 시 좌표를 지정하는 값을 관리 가능
		// => 여러 컨테이너나 컴포넌트의 위치가 일정할 때 하나로 관리가 가능
		Point p = new Point(620,300);
//		f.setLocation(p);
		
		// ==========================================================================
		// setBounds() 메서드를 사용하면 좌표와 크기를 동시에 설정 가능
		// 1) setBounds(x, y, width, height) : x좌표, y좌표, 가로크기, 세로크기 순으로 전달
//		f.setBounds(600, 300, 600, 300);
		
		// 2) setBounds(Rectangle r) : 좌표와 크기를 관리하는 Rectangle 객체 전달 가능
		// => Rectangle 객체 생성 시 파라미터로 x, y, width, height 전달하거나
		//    Point, Dimension 객체 전달도 가능
//		Rectangle r = new Rectangle(600, 300, 600, 300);
		
		Rectangle r = new Rectangle(p, d);
		
		f.setBounds(r);
		
		
		
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
		
	}

	public static void main(String[] args) {

		new Ex2();

	}

}

 

ex_swing.Ex3

package ex_swing;

import javax.swing.*;

public class Ex3 {

	public Ex3() {
		showFrame();
	}
	
	public void showFrame() {
		JFrame f = new JFrame("Ex3 프레임 만들기");
		f.setBounds(600,300,600,300);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		/*
		 * JButton 클래스
		 * - 버튼 기능을 수행하는 컴포넌트
		 * - 생성자 파라미터에 문자열 전달 시 버튼의 텍스트 설정 가능
		 * - 단독으로 사용은 불가능하며, 컨테이너등에 부착해서 사용 필요
		 *   => 해당 컨테이너의 add() 메서드를 호출하여 추가(부착)
		 */
		
		// 1. JButton 객체 생성
		JButton btn = new JButton("버튼");
		
		// 2. JButton 객체를 JFrame 객체에 부착
		//    => JFrame 객체의 add() 메서드를 호출 필요
		f.add(btn); // 프레임에 버튼 부착
		
		f.setVisible(true);
	}
	
	public static void main(String[] args) {
		new Ex3();
		
	}
}

# JFrame : JFrame 클래스를 사용하여 윈도우 창을 만듬

   -> setSize(가로픽셀, 세로픽셀)

   -> setLocation(가로좌표, 세로좌표)

   -> setTitle("제목")

   -> setDefaultCloseOperation(옵션) : 닫기 버튼 클릭 시 수행할 동작 지정

       옵션 = JFrame.XXX_ON_CLOSE 상수를 사용하여 닫기 버튼의 동작 결정

   -> setVIsible(true or false) : 현재 프레임 표시 여부 결정

 

# JButton : JButton 클래스를 사용하여 버튼생성

'JAVA' 카테고리의 다른 글

swing (Layout)  (0) 2022.02.26
Swing(event_handling)  (0) 2022.02.23
인터페이스 활용 | 22/01/05  (0) 2022.01.11
인터페이스 활용 | 22/01/03  (0) 2022.01.11
인터페이스(Interface) | 22/01/03  (0) 2022.01.11