프로그래밍 언어/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 인터페이스를 구현받을수있기 때문에 좀 더 활용성이 높다고 할 수 있겠습니다. 읽어주셔서 감사합니다~