티스토리 뷰

back/Java

KH 31일차(Swing)

devel0per 2022. 8. 15. 20:30

스윙 프레임

- 모든 스윙 컴포넌트를 담는 최상위 GUI 컨테이너

- JFrame을 상속받아 구현

- 스윙 프레임에 의존

프레임 : 스윙 프로그램의 기본 틀

메뉴바 : 메뉴 부착

Content Pane : GUI 컴포넌트 부착 

 

☆ 실행코드 

JFrame을 상속받아 300, 300 Size의 프레임 생성.

package ja_0812;

import javax.swing.JFrame;

public class Swing1 extends JFrame{
	public Swing1() {
		setTitle("300 * 300 swing frame 만들기");
		setSize(300, 300);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new Swing1();
	}

}

★ 실행결과

 

스윙 응용프로그램의 종료

- 응용프로그램 내에서 스스로 종료 (System.exit(0); : 언제 어디서나 종료)

- 프레임 종료 버튼(x) 클릭되면?

프레임은 닫히지만, 응용 프로그램은 작동함 : setVisible(true) 호출 시 프레임 보이고 다시 작동

- 프레임 종료 버튼 클릭시 프레임 닫고 응용프로그램 종료하려면

: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

main() 종료 뒤에도 프레임이 살아 있는 이유?

- 스윙 프로그램이 실행되는 동안 메인스레드, 이벤트 분배스레드 생성

 

메인 스레드 : main() 실행, 자바 응용 프로그램의 실행 시작

이벤트 분배 스레드 : 자동실행, 프레임과 버튼, GUI 화면 그리기, 키와 마우스 입력받아 호출

실행중인 사용자 스레드가 하나도 없을 때 자바 응용 프로그램 종료

-> 메인 스레드가 종료되어도 이벤트 분배 스레드가 살아있어, 프레임 화면, 마우스나 키 입력을 받기 떄문.

 

컨테이너와 배치 개념

1. 컨테이너마다 하나의 배치 관리자가 존재 : 삽입되는 모든 컴포넌트의 위치와 크기 결정, 적절히 배치

2. 컨테이너의 크기가 변하면 내부 컴포넌트들의 위치와 크기를 모두 재조절/재배치

 

배치관리자

-java.awt 패키지에 구현되어 있음

(FlowLayout, BorderLayout, GridLayout, CardLayout) 4가지 유형이 있다.

 

자리를 지정해주는 사람을 배치관리자(LayoutManager)

자리 자체를 컨테이너(Container)

자리를 배정받는 사람들을 컴포넌트(Component)

 

AWT와 Swing에서

Window, JWindow, Frame, JFrame, Dialog, JDialog의 Defalut 배치관리자는 BorderLayout

Panel, JPanel, Applet, JApplet의 Defalut 배치관리는 FlowLayout이다.

 

컨테이나와 컴포넌트의 포함관계

 

 

 

 

'back > Java' 카테고리의 다른 글

KH 33일차(IO Stream)  (0) 2022.08.17
KH 32일차(Swing, AWT 마무리)  (0) 2022.08.16
KH 30일차(Swing)  (0) 2022.08.11
KH 29일차(Graphics, Font, Image EVENT)  (5) 2022.08.10
KH 29일차(Graphics, Adapter, WindowEvent)  (2) 2022.08.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크