개발속이야기/Java

JPanel 시계 예제

스토리지기 2017. 12. 28. 10:27

package com.oraclejava.exam3;


import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.text.SimpleDateFormat;

import java.util.Date;


import javax.swing.JFrame;

import javax.swing.JPanel;


public class JaFrm2 extends JFrame {

public JaFrm2(String title) {

setTitle(title);    // 타이틀

MyClock mc = new MyClock();

add(mc);

mc.start();

setSize(400, 200);    // 크기

setDefaultCloseOperation(EXIT_ON_CLOSE);    // 종료버튼 클릭시 완전종료

setVisible(true);    // 실행시 보이게

}


public static void main(String[] args) {

// TODO Auto-generated method stub

JaFrm2 frm = new JaFrm2("시계");


}

}


class MyClock extends JPanel implements Runnable{


Thread thread = null;

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");

Date currentDate;

String time;

public void start() {

if(thread == null)

{

thread = new Thread(this); // this

thread.start();

}

}

public void stop() {

thread = null; // 쓰레드종료

}

@Override

public void run() {

// TODO Auto-generated method stub

while(thread != null) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

repaint(); // 화면갱신

}

}

// 그림을 그리는 곳

@Override

protected void paintComponent(Graphics g) {

// TODO Auto-generated method stub

super.paintComponent(g);

drawSturecture(g); // 화면 클리어

currentDate = new Date();

time = formatter.format(currentDate);

g.drawString(time, 150, 80); // 문자열 표시

}


private void drawSturecture(Graphics g) {

// TODO Auto-generated method stub

g.setFont(new Font("맑은고딕", Font.BOLD, 24)); // 폰트

g.setColor(Color.orange);

g.fillOval(0, 0, 380, 160);

g.setColor(Color.black);

}

}


'개발속이야기 > Java' 카테고리의 다른 글

JFrame JComboBox 예제  (0) 2017.12.28
JFrame button, checkbox, textfield 예제  (0) 2017.12.28
Java Thread 예제  (0) 2017.12.28
lamdba식 예제  (0) 2017.12.28
SmartPhone 클래스 작성  (0) 2017.12.28