「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
パッケージを使えば簡単に取得できます。
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
に時刻文字列をセットすれば、画面に表示できます。
まずは基本のラベル表示:
JLabel label = new JLabel("現在時刻:00:00:00");
frame.add(label);
そして、時間を毎秒更新する仕組みとして、javax.swing.Timer
を使用します。
Timerで毎秒更新する仕組み
javax.swing.Timerで1秒ごとに時刻更新
結論:定期的に動作するイベント処理をTimerで設定できます。
以下がTimerを使った更新処理のコードです。
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時計アプリの完成形コード
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をもっと実用的に使いたい人にぴったりの発展課題です。
完成コードのまとめと構成
ClockApp.java // 単一ファイルで構成
GUIで動くシンプルなアプリなので、Javaの初心者にとって達成感がある内容です。
まとめ:Java学習の次の一歩に
この記事では、Javaで時計アプリを作る方法を解説しました。
学べたポイント:
LocalTime
の使い方Swing
による画面表示Timer
を使ったリアルタイム更新