자바실무 제 2강[KNU 2021-2]
👨💻🏫KNU 2021-2 SW & media 자바실무 필기노트 2
참고. 프레임에 컴포넌트 붙이기
이번 강의에서 사용될 예제
import javax.swing.*;
import java.awt.*;
public class MyFrame extends JFrame{
public MyFrame(){
setTitle("title");
//프레임 종료버튼을 받고 응용프로그램이 종료되도록
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane=getContentPane();
contentPane.setBackground(Color.ORANGE);
contentPane.setLayout(new FlowLayout());//contentPane의치배치관리자는 FlowLayout
contentPane.add(new JButton("OK"));
contentPane.add(new JButton("Cancel"));
contentPane.add(new JButton("Ignore"));
setSize(300,150); //sizeFix
setVisible(true); //frameOut
}
public static void main(String[]args){
new MyFrame();
}
}
1. 프레임 종료시키기
응용프로그램 내에서 스스로 종료
System.exit(0);
main()종료된 뒤에도 프레임이 살아있는 이유
프레임은 사용자 스레드
가 하나도 없을때 종료된다. 메인 스레드
가 종료되어도 이벤트 분배스레드
가 살아있기때문에 프레임화면을 그리고 마우스와 키 입력을 받기 때문이다.
메인스레드
- main을 실행하는 스레드로 자바 응용프로그램의 시작점
이벤트 분배스레드
- SWING 응용프로그램이 실행될때 자동으로 실행되는 스레드
2.컨테이너와 배치 유형
java.awt 패키지로 구현된 대표적인 배치관리자 유형에 대하여 알아본다.
2.1. FlowLayout
- FlowLayout: 좌->우 상->하순으로 컴포넌트를 배치한다.
FlowLayout(int align,int hGap,int vGap);
//align은 정렬방식으로 FlowLayout.LEFT,FlowLayout.RIGHT,FlowLayout.CENTER
//hGap은 컴포넌트간 수평간격(디폴트5),
//vGap은 컴포넌트간 수직간격(디폴트5)
container.setLayout(new FlowLayout(FlowLayout.LEFT,30,40));
container.add(new JButton("comp1"));
container.add(new JButton("comp2"));
2.2. BorderLayout
- BorderLayout: 컨테이너 구역을 5가지 위치로 분리해 배치한다.
BorderLayout(int hGap, int vGap);
//hGap은 컴포넌트간 수평간격, vGap은 컴포넌트간 수직간격 add(Conponent comp, int index) ;
//index는 EAST, WEST, NORTH, SOUTH, CENTER
container.setLayout(new BorederLayout(30,20));
container.add(new JButton("comp1"),BorderLayout.WEST);
container.add(new JButton("comp2"),BorderLayout.EAST);
2.3. GridLayout
- GridLayout: 컨테이너 공간을 그리드로 분할하고 각 셀에 하나의 컴포넌트를 배치한다.
GridLayout(int rows, int cols, int hGap, int vGap);
//rows는 열 수, cols는 행 수,
//hGap은 컴포넌트간 수평간격,
//vGap은 컴포넌트간 수직간격
container.setLayout(new GridLayout(4,3,5,5)); //4*3분할 셀간격 5
container.add(new JButton("셀번호"));//셀번호 미지정시 플로우레이아웃처럼 자동 align된다.
container.add(new JButton("셀번호"));
2.4. 배치관리자 미사용
- 배치관리자 미사용: 수동설정으로 사용자가 원하는 위치와 크기로 맞춤 지정 가능하다.
setLayout(null)
component.setSize(int width,int height) //컴포넌트 크기 조정
component.setLocation(int x,int y) //컴포넌트 위치 조정
component.setBounds(int x,int y,int width,int height) //컴포넌트 위치 크기 동시지정
댓글남기기