「Javaで何か作ってみたいけど、実用的なアプリが思いつかない」
「リアルタイムに動くアプリに挑戦してみたい」
そんなお悩みをお持ちの方におすすめなのが、時計アプリの作成です。
Javaでは簡単なクラスとGUIの組み合わせで、現在時刻をリアルタイムに表示するアプリが作れます。
初心者の方でも、時間の取得や表示更新の仕組みを楽しく学べる題材です。
この記事では、誰でも作れるようにわかりやすいコード付きで丁寧に解説してまいります。
時計アプリを作る意味とは?
なぜ時計アプリは学習に最適なのか?
結論:リアルタイム処理とGUI更新の基本が一度に学べるからです。
Java初心者の方が次に取り組むべきステップとして、
「リアルタイムで動作するアプリ」を作ることは非常に意味があります。
時計アプリを作ると学べること:
- 現在時刻の取得(
LocalTime
クラスなど) - 繰り返し処理と待機(
Timer
などの使い方) - SwingによるGUI表示と更新
たとえば文部科学省の「情報活用能力の育成」でも、
「プログラミング的思考を実生活と結びつけて育成すること」が重要視されています
(参考:https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1375607.htm)。
時計アプリはその入り口として最適な題材です。
Javaで現在時刻を取得する方法
LocalTimeとDateTimeFormatterの使い方
結論:Java 8以降のjava.time
パッケージを使えば簡単に取得できます。
1 2 3 4 | import java.time.LocalTime; import java.time.format.DateTimeFormatter; LocalTime now = LocalTime.now(); String time = now.format(DateTimeFormatter.ofPattern( "HH:mm:ss" )); |
このコードを使えば、常に最新の時:分:秒の時刻を文字列として取得できます。
GUIに現在時刻を表示する方法
Swingを使って画面に表示する手順
結論:JLabel
に時刻文字列をセットすれば、画面に表示できます。
まずは基本のラベル表示:
1 2 | JLabel label = new JLabel( "現在時刻:00:00:00" ); frame.add(label); |
そして、時間を毎秒更新する仕組みとして、javax.swing.Timer
を使用します。
Timerで毎秒更新する仕組み
javax.swing.Timerで1秒ごとに時刻更新
結論:定期的に動作するイベント処理をTimerで設定できます。
以下がTimerを使った更新処理のコードです。
1 2 3 4 5 6 7 8 | Timer timer = new Timer( 1000 , new ActionListener() { public void actionPerformed(ActionEvent e) { LocalTime now = LocalTime.now(); String time = now.format(DateTimeFormatter.ofPattern( "HH:mm:ss" )); label.setText( "現在時刻:" + time); } }); timer.start(); |
これで毎秒画面が更新され、リアルタイムに動く時計になります。
Java時計アプリの完成形コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.time.LocalTime; import java.time.format.DateTimeFormatter; public class ClockApp extends JFrame { private JLabel label; public ClockApp() { label = new JLabel(); label.setFont( new Font( "Arial" , Font.BOLD, 32 )); label.setHorizontalAlignment(SwingConstants.CENTER); getContentPane().add(label); setTitle( "時計アプリ" ); setSize( 300 , 150 ); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible( true ); Timer timer = new Timer( 1000 , new ActionListener() { public void actionPerformed(ActionEvent e) { LocalTime now = LocalTime.now(); String time = now.format(DateTimeFormatter.ofPattern( "HH:mm:ss" )); label.setText(time); } }); timer.start(); } public static void main(String[] args) { new ClockApp(); } } |
うまく動かないときの対処法
よくあるミスとその改善方法
よくある失敗例:
java.time
がインポートされていないTimer
とjava.util.Timer
を間違えるSwing
のコンポーネントを正しく配置していない
改善方法:
javax.swing.Timer
を明示的に使うmain
メソッド内でnew ClockApp();
を実行するだけにする- フォントサイズや枠の大きさも調整可能(
setFont()
やsetSize()
)
応用アイデアとステップアップ
次に挑戦してみたい機能例
時計アプリを応用するには:
- 秒数以外に「日付」も表示
- 世界時計(
ZoneId
を使って他国の時刻表示) - アラーム機能を追加する(指定時刻で
JOptionPane
表示)
これらは、Javaをもっと実用的に使いたい人にぴったりの発展課題です。
完成コードのまとめと構成
1 | ClockApp.java // 単一ファイルで構成 |
GUIで動くシンプルなアプリなので、Javaの初心者にとって達成感がある内容です。
まとめ:Java学習の次の一歩に
この記事では、Javaで時計アプリを作る方法を解説しました。
学べたポイント:
LocalTime
の使い方Swing
による画面表示Timer
を使ったリアルタイム更新