- 모든 스윙 컴포넌트를 답는 최상위 컨테이너
- 프래임이 있어야 GUI가 화면상 출력이 된다
ⓐ 프레임이 없이 독립적으로 화면에 출력되지 않는다.
ⓑ 프레임이 닫히면 프레임 내의 모든 컴포넌트들도 사라진다.
- JFrame은 Frame/MenuBar/ContentPane으로 구성
ⓐ MenuBar : 메뉴를 부착할 수 있게 하는 Bar
ⓑ ContentPane : 메뉴를 제외한 모든 GUI를 부착하는 공간
- 프레임 메소드
ⓐ setTitle("String") > 프레임의 title을 String으로 지정
ⓑ setSize(num1,num2) > 프레임의 크기를 num1 x num2로 지정
ⓒ setVisble(value) > value로 true와 false를 가질수 있으며 true일시 화면상에 보인다. default값은 false!!
※ size의 num1 또는 num2가 "0"이면 생성되지 않는다.
- 프레임 생성의 두가지 예
ⓐ JFrame 객체를 직접 생성
import javax.swing.*;
public class MakeFrame{
public static void main(String[] args){
JFrame f = new JFrame();
f.setSize(300,150);
f.setTitle("First Frame");
f.setVisible(true);
}
}
장점 : 단순하다
단점 : 컴포넌트 추가 작업이 불편하다. 확정성이 떨어진다.
ⓑ JFrame 클래스에서 상속받는 방법
import javax.swing.*;
public class MakeFrame extends JFrame{
MakeFrame(){
setSize(300,150);
setTitle("First Frame");
setVisible(true);
}
public static void main(String[] args){
MakeFrame mf = new MakeFrame();
}
장점 : MakeFrame 클래스에 메소드를 추가할 수 있기 때문에 확장성, 융통성이 높다.
- 프레임에 컴포넌트 부착하기
> 컴포넌트는 컨텐트 팬에만 부착할 수 있다.
ⓐ 컨텐트 팬은 프래임 생성과 동시에 생성 > 프레임에 해당하는 컨텐트 펜을 알아내야 한다.
>container NAME = Frame_Name.getContentPane()
ⓑ 알아낸 컨텐트 펜에 컴포넌트 부착하기 > 컨테이너의 add()메소드 사용
> NAME.add(COMPONENT);
* 스윙프로그램의 종료
- System.exit(0); 를 적정위치에 넣기
- 프레임 윈도우의 x버튼의 클릭과 함께 종료시키기
> 프래임 윈도우의 x버튼을 클릭하면 윈도우 창만 사라지고 프로그램은 계속 실행된다.
> 다음과 같은 소스를 추가하여 윈도우의 x버튼 클릭과 함께 프로그램을 종료시키게 만든다.
> Frame_Name.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
---------------------------------------------------------------------------------------------
위에서 나온 것을 바탕으로 간단히 스윙GUI를 구현해 보겠다~
import javax.swing.*;
import java.awt.*;
public class exam1 extends JFrame{
exam1(){
setTitle("First Swing Program");
//프래임의 타이틀 설정
setSize(300,300);
//프래임 사이즈를 300*300으로 설정
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//윈도우 프레임의 x버튼을 클릭시 프로그램 종료가 가능하게 만듬
Container cp = getContentPane();
//프레임의 컨텐트 펜을 발굴!!
cp.add(new JButton("TEST"));
//TEST란 이름을 가진 버튼 컴포넌트 추가
cp.setBackground(Color.YELLOW);
//컨텐트 펜의 색을 노란색으로 초기화
cp.setLayout(new FlowLayout());
//배치 관리자 실행(추후설명)
setVisible(true);
//프레임을 보이게 설정
}
public static void main(String[] args){
exam1 A = new exam1();
}
}
결과