Java ソースコード TimerTest.java
Timer割り込みの使用例(世界時計)
GUI作成はNetBeansのデザイナを使用。
年月日、時分秒表示。地域の切り替えが可能。
年月日はjTextDate、時分秒はjTextField1、地域切り替えコンボボックスは
jComboAreaで作成。
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.Calendar;
import java.util.TimeZone;
public class TimerTest extends javax.swing.JFrame implements ActionListener{
javax.swing.Timer timer;
String areaCode="Japan"; //初期Time Zone エリアコード
public TimerTest() {
initComponents();
timer = new javax.swing.Timer(500 , this); //0.5秒ごとにタイマー起動
timer.start();
}
public void actionPerformed(ActionEvent e){
//Timerがトリガーされるとここが呼び出される
String[ ] strDWeek={"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(areaCode));
String strAmpm;
int Year=cal.get(Calendar.YEAR);
int Month=cal.get(Calendar.MONTH);
int Day=cal.get(Calendar.DAY_OF_MONTH);
int DWeek=cal.get(Calendar.DAY_OF_WEEK); //曜日
int apm=cal.get(Calendar.AM_PM);
int Hour = cal.get(Calendar.HOUR);
int Minute = cal.get(Calendar.MINUTE);
int Second = cal.get(Calendar.SECOND);
String str1 = String.valueOf(Hour);
String str2 = String.valueOf(Minute);
String str3 = String.valueOf(Second);
if (Hour < 10) { str1 = '0' + str1; }
if (Minute < 10) { str2 = '0' + str2; }
if (Second < 10) { str3 = '0' + str3; }
if(apm==0){
strAmpm="AM";
}else{
strAmpm="PM";
}
jTextField1.setText(strAmpm + " " + str1 + ":"+ str2+":" + str3);
jTextDate.setText(Year+ "/"+ Month + "/"+ Day +
" ("+strDWeek[DWeek-1] + ")" );
}
private void jComboAreaActionPerformed(java.awt.event.ActionEvent evt) {
// Area設定コンボボックスがクリックされるとここが呼び出される
areaCode=(String)jComboArea.getItemAt(jComboArea.getSelectedIndex());
}
地域切り替えのエリアコードリスト(Japanなど)は、NetBeansのデザイン画面で、
jComboAreaのプロパティのmodelの右端のボタンで入力。
Pacific/Samoa
Pacific/Honolulu
Europe/London
Europe/Madrid
Africa/Cairo
Africa/Nairobi
Asia/Jakarta
Asia/Hong_Kong
Asia/Taipei
Australia/West
Japan
Pacific/Guam
Asia/Shanghai
US/Eastern
US/Central
US/Mountain
US/Arizona
US/Pacific
などを入力する。エリアコードは非常に多くの種類があり、
必要に応じて追加、削除すればよい。
エリアコードの入力にデザイン画面のjComboAreaのプロパティを使わない場合は、
以下のようなプログラムコードをコンストラクタpublic TimerTest( )の中の、
initComponents( ); の下に直接記述してもよい。
jComboArea.setModel(new javax.swing.DefaultComboBoxModel(new String[ ] {
"Japan", "Pacific/Samoa", "Pacific/Honolulu" }));
動作画面例
コンボボックスで地域を変更することができます。

Clock Sample
Kom., 2013
