컨테이너와 컴포넌트
컨테이너 : 여러 컴포넌트를 하나로 묶어서 부착 가능한 객체
프레임과 패널을 주로 사용
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 |