자바 스윙 GUI 디지털시계 만들기 (1편)-시간출력

자바 스윙 GUI 디지털시계 만들기

안녕하세요.

얼마전에 프로젝트로 시계를 만들었습니다.

그래서 오늘은 자바에서 스윙으로 디지털시계를 한번 만들어볼까해요.

오늘할 내용.

1. 시간을 받아온다. (잘 받아오는지 콘솔창에 출력해본다.)

2. 콘솔창에 출력이 잘 된다면 JFrame에도 출력가능하게 만든다. 

3. 문제점

4. 해결방법

5. readme&*소스코드는 글의 맨 아래에 있습니다.

아래 사진은 오늘 완성할 시계사진이에요.

물론 오늘은 시간출력까지만 하고 폰트는 다음시간에 적용할거고요. ㅎㅎ

디지털시계 완성

1. 시간을 받아오기

먼저 시계를 만들려면 시간을 받아와야되요.

*그 전에 gui시계를 만드려고 하니 이클립스를 열어서 프레임을 만들어주세요.(아래글 참고)

[JAVA] - java swing 창 만들기

디지털시계 1

아마 위의 사진처럼 프레임을 만드는 것 까지 하셨을겁니다.

그럼 이제 시간을 받아오도록 만들어보겠습니다.

저는 timeget이라는 메소드를 하나 만들어서 생성자에 넣었습니다.

한번 실행해보니 시간을 받아오지만 timeget을 호출했을때 한번만 받아오네요.

디지털시계 2

그럼 이번에는 여러번 받아오도록 while문 안쪽에 넣어보겠습니다.

원했던대로 계속 시간을 받아오지만 노트북의 팬이 갑자기 돌아가기 시작합니다.(컴퓨터의 자원을 엄청 쓴다는 이야기죠.)

디지털시계 3

시간을 받아오지만 너무 자주 받아와서 시간이 제대로 변하는지도 확인하지 못하겠네요.

try/catch문을 사용해서 0.1초에 한번씩 시간을 받아오도록 하겠습니다.

(sleep(1000)==1초 입니다.)

디지털시계 4

콘솔창에서는 잘 받아오는 것을 확인할 수 있었습니다.

2.JFrame에 시간 출력하기

뭐 panel에 출력하는분도 있지만 저는 그냥 JFrame에 출력하겠습니다.

시간을 출력하기 위해서 JLabel을 만들어 넣어줄겁니다.

(년도, 월, 일, 요일)과 (pm/am, 시간, 분, 초, msec)를 두줄로 출력하기 위해서 저는 JLabel을 두줄로 만들겠습니다.

만들고 라벨에 설정을 해주었습니다.

디지털시계 5

이제 저 라벨에 시간을 출력해보겠습니다.

시간을 출력하기 위해서 만든 라벨에 글을 추가하려면 문자열이여야 합니다.

그러니 문자열로 만들어줍시다.

만든다음에 setText로 JLabel에 추가해주세요.

디지털시계 6

아마 이렇게 나올겁니다.

분명 두줄을 추가했는데 한줄밖에 나오지 않습니다.

디지털시계 7

3. 문제점.

여기서 문제점이 보입니다.

문제점 1. 사진에는 나오지 않았지만 요일이 숫자로 나오는 매우 사소한 문제가 있습니다.

문제점 2. 저는 분명 JFrame을 두개 추가했는데 한줄밖에 보이지 않습니다.

물론 한줄에 다 넣으면 나오기는 하겠죠.

문제점 3. 시간이 겹쳐서 보입니다.

(사소한 문제점 제가 Thread에 대한 이해가 살짝 부족함)

문제점 4 . 이문제는 문제점 1보다 더욱 사소한 문제입니다. 12시가 0시로 나옵니다.

근데 귀찮으니 이건 해결하지 않겠습니다.

4. 해결방법.

문제점 1 해결방법.

요일이 숫자로 나오는 문제는 스위치문으로 해결했습니다.

디지털시계 8

문제점 2 해결방법.

이것을 해결하는 방법을 생각해봤습니다.

먼저 thread를 이용하는 방법.

그냥 다시 그리는 방법.

이 둘중에서 저는 thread를 잘 몰라서 다시 그리는 방법을 사용했습니다.

*물론 다시 그리는 방법이 좋다는게 아닙니다.

디지털시계 9

문제점 3 해결방법.

이 문제는 문제 2에서 repaint를 해주니 바로 해결되었습니다.

5.ReadMe

소스코드에 폰트부분이 없어서 실행했을때의 사진은 맨 위에 보여드린 사진과는 살짝 다릅니다.

소스코드 역시 살짝 다른부분이 있지만 그부분은 기능과 상관이 없는 클래스의 이름같은 부분입니다.

소스코드는 제가 글을 다 쓰고 글에 맞추어 나누었습니다. 모든 문제점 3까지 해결한 코드는 blog4코드입니다.

이클립스에 추가하셔서 보셔도 되고 압축해제하셔서 .java파일을 보셔도 됩니다.

(아래 보이는 네모박스에서 자바 이클립스 프로젝트 파일열기 참고하시면 됩니다.)

blog.zip

*폰트를 추가하는 방법은 나중에 추가하겠습니다. ㅎㅎ

위 코드에서 폰트만 바꾸면 맨위의 사진처럼 됩니다.

Designed by JB FACTORY