티스토리 뷰
Java Swing
자바에서 GUI 구현을 위해 제공되는 API
Java AWT (Active Window Toolkit)의 업그레이드 형으로 AWT API와 Swing API을 조합하여 사용한다.
java.awt 패키지와 java.swing 패키지의 각종 클래스 및 인터페이스 활용
1. 컨테이너 : 여러 컴포넌트를 하나로 묶어서 부착 가능한 객체(도큐먼트와 비슷하다고 보면 됨)
- 프레임과 패널 주로 사용
- JFrame 클래스와 JPanel 클래스로 구현
2. 컴포넌트 : 화면을 구성하는 각각의 요소(버튼, 체크박스, 라디오 버튼 등)
- 컨테이너에 부착하여 사용
- 각 컴포넌트에서 사용자로부터 어떤 동작이 발생하면 해당 동작을 처리하는 이벤트 처리 필요
창 생성하는 기본 문법
창(윈도우)을 생성하기 위해서는 Window 계열 객체 생성 필요(배열같은)
- 주로 JFrame 클래스 사용
- JFrame 객체를 생성하거나 JFrame 클래스를 상속받는 서브클래스를 정의하여 창 생성
ex) class Ex1 extends JFrame{} 또는 JFrame f = new JFrame();
JFrame 클래스의 메소드를 사용해 윈도우(창) 설정
setSize(가로픽셀, 세로픽셀) : 창 크기 설정
setLocation(가로좌표, 세로좌표) : 창 위치 좌표 지정
setTitle("제목") : 타이틀에 표시할 내용 지정
setDefaultCloseOpration() : 닫기 버튼 클릭 시 수행할 동작 지정
- JFrame.XXX_ON_CLOSE 상수를 사용해 닫기 버튼의 동작 결정(안 하면 창만 꺼졌지 프로그램이 종료된 게 아님)
EXIT_ON_CLOSE : 닫기 버튼 클릭 시 프로그램 종료 (다른 창도 모두 닫힘)
DISPOSE_ON_CLOSE : 닫기 버튼 클릭 시 현재 창만 종료
HIDE_ON_CLOSE : 닫기 버튼 클릭 시 현재 창 숨김(종료가 아니라 다시 표시가 가능하다)
DO_NOTHING_ON_CLOSE : 닫기 버튼 클릭 시 아무 작업도 안함
setVisible(true or false) : 현재 프레임 표시 여부 결정
setBounds() 메서드 사용하면 좌표와 크기를 동시에 설정가능
1) set Bounds(x, y, width, height) : x, y 좌표, 가로, 세로 크기 순으로 전달
2) setBounds(Rectangle r) : 좌표와 크기를 관리하는 Rectangle 객체 전달 가능
Rectangle 객체 생성 시 파라미터로 x, y, width, height 전달하거나 point p,Dimension d 객체 전달 가능
package swing;
import javax.swing.JFrame;
public class Ex1 extends JFrame{
// JFrame 클래스의 메소드를 사용해 윈도우(창) 설정
public Ex1() {
showFrame();
}
public void showFrame() {
setSize(400, 200); // 가로 300, 세로 200 크기 설정
setLocation(800, 500); // 창 생성될 좌표
setTitle("Jframe을 상속받아 생성");
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setVisible(true); // 프레임을 화면에 표시
// JFrame 객체를 직접생성해 프레임 생성
JFrame f = new JFrame("JFrame 으로 생성한 프레임");
f.setSize(600, 400);
f.setLocation(600, 600);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Ex1();
}
}
JButton 클래스
버튼 기능(클릭입력)을 수행하는 컴포넌트
생성자 파라미터에 문자열 전달 시 버튼의 텍스트 설정 가능
단독으로 사용 불가능하며, 컨테이너(프레임 또는 패널 등)에 부착해서 사용 필요
=> 해당 컨테이너의 add() 메서드를 호출하여 추가(부착)
public class Ex3 extends JFrame{
public Ex3() {
showFrame();
}
public void showFrame() {
setBounds(600,400,300,300);
// 버튼 컴포넌트(JButton)를 생성해 프레임(JFrame = 현재객체
JButton btn = new JButton("버튼");
// 객체 생성만해서 안 뜸, 부착을 시켜야한다.
add(btn);
// ActionListener 인터페이스고 오버라이딩할 메서드가 하나뿐
// => 람다식 가능
// btn.addActionListener(new ActionListener() {
//
// @Override
// public void actionPerformed(ActionEvent e) {
// System.out.println("버튼클릭됨");
// }
// });
btn.addActionListener(e -> System.out.println("버튼 클릭됨!") );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Ex3();
'배운 것 기록 > java' 카테고리의 다른 글
레이아웃(layout) (0) | 2022.07.26 |
---|---|
Event (0) | 2022.07.20 |
DecimalFormat, MessageFormat 클래스 (0) | 2022.07.16 |
자바 I/O - Input / Output (0) | 2022.07.13 |
BigInteger, BigDecimal 클래스 (0) | 2022.07.12 |