countdownプログラムを作ってみよう2

   2012/05/05

まいど、管理人イガジーです。
プログラミングは習うより慣れ、小さなものをいくつも作る経験を積むことで
自然にマスターできるようになります。

という訳で、Javaプログラミングの演習としてCountDownを作ってゆきます。
Calendarクラスを使うキモの部分の例を示します。

import java.util.Calendar;
import java.util.GregorianCalendar;

public class CountDown {
	final long MS2HOUR=1000*60*60;
	Calendar c,d;

	CountDown() { // constructor
		c=new GregorianCalendar();
		int cyy=c.get(Calendar.YEAR);
		int cmm =c.get(Calendar.MONTH);
		int cdd =c.get(Calendar.DAY_OF_MONTH);
		long ms=c.getTimeInMillis();
		System.out.printf("今日は %d年 %d月 %d日\n", cyy,cmm+1,cdd);
		d=new GregorianCalendar(cyy+1,0,1);
		long mst=d.getTimeInMillis()-ms;
		int hh=(int)(mst/MS2HOUR);
		int dd=hh/24;
		System.out.printf("今年は、あと %d日(%d時間)\n", dd,hh);
		int rh=hh%24;
		System.out.printf("今年は、あと %d日と%d時間\n", dd,rh);
	}

	public static void main(String[] args) {
		new CountDown();
	}
}

開発環境はEclipseがおすすめです。
これを実行すると、

今日は 2011年 11月 3日
今年は、あと 58日(1403時間)
今年は、あと 58日と11時間

というような文字列がコンソール(Console)に表示されます。

これをGUI(窓的プログラム)にするには次のようにします。

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class CountDown {
	final long MS2HOUR=1000*60*60;
	Calendar c,d;

	CountDown() { // constructor
		Frame f=new Frame();
		f.addWindowListener(new WindowAdapter(){
		  public void windowClosing(WindowEvent ev) {
		    System.exit(0);
		  }
		});
		f.setSize(300,200);

		c=new GregorianCalendar();
		int cyy=c.get(Calendar.YEAR);
		int cmm =c.get(Calendar.MONTH);
		int cdd =c.get(Calendar.DAY_OF_MONTH);
		long ms=c.getTimeInMillis();
		String td=String.format("今日は %d年 %d月 %d日", cyy,cmm+1,cdd);
		Label today=new Label(td);
		f.add(today, BorderLayout.SOUTH);

		d=new GregorianCalendar(cyy+1,0,1);
		long mst=d.getTimeInMillis()-ms;
		int hh=(int)(mst/MS2HOUR);
		int dd=hh/24;
		String rd=String.format("今年は、あと %d日", dd);
		Label rest=new Label(rd);
		f.add(rest, BorderLayout.CENTER);
		f.setVisible(true);
	}// end of constructor

	public static void main(String[] args) {
		new CountDown();
	}
}

f.addWindowListener(...の部分は、窓を閉じるボタンで終了するおまじないです。

ちょっと文字が小さいと感じるかもしれませんね。
文字を大きくするには、フォントを指定します。例えば、

Font f1=new Font("SansSerif",Font.PLAIN,20);
rest.setFont(f1);

とすると、Label restの文字を20ポイントのサイズにできます。
20の部分を30にするともっと大きな文字にできます。

また、背景に色をつけるには
rest.setBackground(Color.YELLOW);などと、Background(背景)を指定します。

文字を大きくして、中央に色をつけた例は、また明日。

countdownプログラムを作ってみよう1
countdownプログラムを作ってみよう2(この記事)
countdownプログラムを作ってみよう3
countdownプログラムを作ってみよう4
countdownプログラムを作ってみよう5
countdownプログラムを作ってみよう6

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)