4 분 소요

👨‍💻🏫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) //컴포넌트 위치 크기 동시지정

태그:

카테고리:

업데이트:

댓글남기기