수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

자바를 잘아시는 고수님들께 부탁드립니다..

통꽃

2023.04.01

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.Calendar;
interface Timed {
public void tick(Timer t);
}

class Timer extends Thread {
private Timed target;
private int interval;
public Timer(Timed t, int i) {
target = t; interval = i;
setDaemon(true);
}
public void run() {
while (true) {
try {
sleep(interval);
target.tick(this);
}
catch(InterruptedException e) {}
finally{
}
}
}
}
public class TimerTest extends Frame {
public TimerTest() {
setLayout(new GridLayout(2, 3));
add(new ClockCanvas(Seoul, 16));
add(new ClockCanvas(Chicago, 1));
add(new ClockCanvas(London, 7));
add(new ClockCanvas(Moscow, 10));
add(new ClockCanvas(Paris, 8));
add(new ClockCanvas(Beijing, 15));
}
public static void main(String[] args) {
Frame f = new TimerTest();
f.setSize(450, 300);
f.setBackground(Color.gray);
WindowDestroyer listener = new WindowDestroyer();
f.addWindowListener(listener);
f.setVisible(true);
}
}
class ClockCanvas extends Canvas implements Timed {
public int baseX = 10;
public int baseY = 10;
public int clockW = 100;
public int clockH = 100;
public int center = baseX + clockH/2;
private int seconds = 0;
private String city;
private int offset;
private final int LOCAL = 16;
private int timeNumberDist = 10; //값이 증가할수록 가운데 점에 가까워짐
public ClockCanvas(String c, int off) {
city = c; offset = off;

new Timer(this, 1000).start();
setSize(125, 125); // 시계의 크기
}
public void paint(Graphics g) {
g.setColor(Color.white); // 시계의 바탕색
g.fillOval(baseX,baseY, clockW, clockH);
double hourAngle = 2 * Math.PI * (seconds - 3 * 60 * 60) / (12 * 60 * 60); //시간에 해당하는 위치 각
double minuteAngle = 2 * Math.PI * (seconds - 15 * 60) / (60 * 60); // 분에 해당하는 위치 각
double secondAngle = 2 * Math.PI * (seconds - 15) / 60; //초에 해당하는 위치의각
System.out.println(hourAngle : + hourAngle);
System.out.println(minuteAngel : + minuteAngle);
System.out.println(secondAngle : + secondAngle);
g.setColor(Color.black);
g.drawLine(center, center, center + (int)(30 * Math.cos(hourAngle)),
center + (int)(30 * Math.sin(hourAngle)));
g.drawLine(center, center, center + (int)(40 * Math.cos(minuteAngle)),
center + (int)(40 * Math.sin(minuteAngle)));
g.setColor(Color.blue);
g.drawLine(center, center, center + (int)(45 * Math.cos(secondAngle)),
center + (int)(45 * Math.sin(secondAngle)));
g.setColor(Color.black);
g.drawString(city, baseX, baseY+clockH+10);
g.drawString(12,baseX+43,baseY+timeNumberDist); //시계의 12시 부분을 표시
g.drawString(3,baseX+100-timeNumberDist,baseY+55); // 시계의 3시 부분을 표시
g.drawString(6,baseX+47,baseY+110-timeNumberDist); // 시계의 6시 부분을 표시
g.drawString(9,baseX-10+timeNumberDist,baseY+55); // 시계의 9시 부분을 표시
}
public void tick(Timer t) {
//추가 부분입니다. ★★★★★
Calendar cal = Calendar.getInstance();
//추가 부분입니다. ★★★★★
seconds = ((cal.get(Calendar.HOUR) - LOCAL + offset)* 60 * 60) +
(cal.get(Calendar.MINUTE) * 60) + cal.get(Calendar.SECOND);
System.out.println(tick 메소드입니다.seconds : + seconds);
System.out.println(offset : + offset);
System.out.println(LOCAL : + LOCAL);
System.out.println(HOUR : + cal.get(Calendar.HOUR_OF_DAY ));
System.out.println(Calendar.MINUTE * 60 : + (cal.get(Calendar.MINUTE) * 60));
System.out.println(Calendar.SECOND : + cal.get(Calendar.SECOND));
//System.out.println(getTime : + Calendar.getTime() );
repaint();
}
}
class WindowDestroyer extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
위에는 아날로그 시계입니다...위에 소스에 대한....자세한 주석은 아니지만..

대충이라도 어느 부분은 어떤 작용을 하는 지..틀만이라도 잡아서 주석을 달아주시면 감사하겠습니당..ㅠ.ㅠ

자바에 대해 공부하고있는데 아는게 없으니 전혀 이해를 못하겠네요..ㅠ.ㅠ

부탁드리겠습니당.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 징징몬

    Api를 참고하세여 ^^

번호 제 목 글쓴이 날짜
2695814 [질문] PDA에서 애플릿이 가능한가요? (1) 봄시내 2025-05-24
2695785 웹 설정 도와줄분 화이트캣 2025-05-23
2695730 갑자기 기억이 안나는데 accesskey 속성.. 빛나라 2025-05-23
2695702 [질문] Java 버전 차이에 의한 오류?!! (2) 검사 2025-05-23
2695672 자바 임베디드 쪽으로 배우고 싶은데요..질문이요.. (1) 뽀그리 2025-05-22
2695647 헉! 이클립스(v3.1)에서 발생되는 널포인트 익셉션? ;;; (3) 아빠몬 2025-05-22
2695586 IFRAME 캐싱 질문 봄나비 2025-05-22
2695498 [질문]실행가능한 jar파일.. 정말 이해가 안가네요... ㅡㅜ;; 터1프한렩 2025-05-21
2695468 자바랑 이클립스에서요.. 스킬 2025-05-21
2695375 Mysql 연동하는 자바 질문있습니다. 아리솔 2025-05-20
2695319 파워포인트 파일을 저장할 수 있을까요? 시윤 2025-05-19
2695289 [질문]Tween 값의 정도를 알고 싶습니다. 타마 2025-05-19
2695238 c 와 c++의 시작 (10) ChocoHoilc 2025-05-18
2695215 탑메뉴의 repeat-x .배경이 두가지에요ㅠ ㅠ 널위해 2025-05-18
2695187 자바스크립트와 자바의 import에 관해서 질문드려요 (1) 무슬 2025-05-18
2695116 테마 문의 (해당 사이트와 같은 테마 혹은 플러그인) Sweet 2025-05-17
2695084 [질문] starDrag()와 같은 함수 만들기 민구 2025-05-17
2695055 폰트 질문드립니다. 할인사이트에 많이 쓰는 굵은 숫자폰트.. (2) 일본녀 2025-05-17
2695025 [개발툴]Jcreator 에 관해서... (5) 에녹 2025-05-16
2695006 BitmapData ..무비클립에 적용 할수 있을까요? (1) 날위해 2025-05-16
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com