티스토리 뷰

배운 것 기록/java

Swing

키죽 2022. 7. 18. 10:05

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
댓글
최근에 올라온 글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함