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" }));
動作画面例
コンボボックスで地域を変更することができます。
Kom., 2013