프로그래밍 언어/Java

자바 제22강 : 자바 JFrame 클래스로 기본 윈도우창 만들기 (제이프레임)

알버트 2021. 9. 10. 10:31

 

이번에는 JFrame 클래스로 윈도우창 만들고 닫는걸 해보도록 하겠습니다. JFrame클래스는 Frame클래스의 상위 호환이라고 생각하시면 됩니다. 프레임 클래스보다 좀 더 세련되고 다양한 기능을 구현할 수 있습니다.

프레임 클래스와 마찬가지로 윈도우창을 제공해주는 클래스입니다. 바로 간단한 예제를 통해서 JFrame 클래스로 윈도우창 만들기를 해보도록 하겠습니다.

 

 


JFrame 클래스 예제

package kr.koreait.windowTest;

import java.text.SimpleDateFormat;

import javax.swing.JFrame;

//		JFrame을 상속받고 Runnable 인터페이스를 구현받는다. (다중 상속과 같은기능)

public class WindowTest5 extends JFrame implements Runnable {

	public WindowTest5() {
		this("제목 없는 윈도우");	//기본생성자로 제목 설정
	}
	public WindowTest5(String title) {	//인수 받는 생성자로 제목 설정
		setTitle(title);
		setBounds(800, 100, 400, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		
//		"제목있는 윈도우"를 인수로 넣어 JFrame window 객체 생성 
		WindowTest5 window = new WindowTest5("제목 있는 윈도우");
		Thread thread = new Thread(window);	//윈도우 객체를 받아서 thread 객체 생성
		thread.start();	//Thread 실행
		
	}
	
	@Override
	public void run() {
//		타임포맷 생성
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
		while(true) {
			//현재 시간을 타임포맷에 넣어 제목으로 출력
			setTitle(sdf.format(System.currentTimeMillis()));	
			try { Thread.sleep(1); } catch (InterruptedException e)
			{ e.printStackTrace(); }	//0.001초에 한번씩 출력
		}
		
	}
}

코드는 이와 같습니다. 스레드를 실행할 수 있도록 Runnable 인터페이스를 구현받았습니다. 주석으로 설명을 붙여놓았습니다. 코드대로라면, 현재 시각이 윈도우창 제목으로 계속해서 출력될 것입니다. 한번 실행해보겠습니다.

 

 

 

 

네, 지금 시간이 12시 3분 43초입니다. 그래서 저렇게 시간포맷으로 출력되는 것을 알 수 있습니다.

이처럼 JFrame 클래스는 Runnable 인터페이스를 구현받을수있기 때문에 좀 더 활용성이 높다고 할 수 있겠습니다. 읽어주셔서 감사합니다~