Selain menggunakan methode Runnable, kita juga dapat menggunakan methode lain untuk menciptakan sebuah Thread. Methode tersebut adalah Timer, yang terletak pada kelas javax.swing.Timer. Kelebihan dari methode ini adalah kita tidak perlu mengimplementasikan ke dalam kelas utama dan prosesnya yang tidak terganggu oleh proses-proses yang lainnya.
Konstruktor dari Timer adalah:
- Timer(int delay, ActionListener listener)
- delay adalah waktu tunggu yang digunakan proses Thread. Nilai delay ini besarnya dalam satuan milisecond.
- listener adalah ActionListener yang akan digunakan untuk melakukan proses yang diinginkan.
Untuk menjalankan Timer, methode yang digunakan adalah start(), sedangkan untuk menghentikannya adalah dengan menggunakan methode stop().
Dalam pembuatan jam digital ini adalah hal penting yang harus diperhatikan adalah apabila nilai dari waktu (jam, menit, atau detik) lebih kecil dari 10, maka angka yang ditampilkan di layar hanya 1 digit. Hal ini dapat menyebabkan perubahan terhadap posisi dari teks tersebut. Untuk mengatasi hal tersebut, maka apabila nilai waktu lebih kecil dari 10, maka nilai tersebut ditambahkan 1 digit di depannya berupa angka 0 (nol), sehingga nilai waktu yang ditampilkan di layar selalu dua digit.
Listing keseluruhan program dari contoh membuat jam digital adalah:
import javax.swing.*;
import java.awt.event.*;
import java.util.Date;
import java.awt.*;
public class jamDigital
extends JFrame {
// Deklarasi komponen Label
JLabel tampil_jam = new JLabel();
// Konstruktor
public jamDigital() {
tampil_jam.setFont(new Font("Dialog", 1, 30));
this.getContentPane().setLayout(new FlowLayout());
this.getContentPane().add(tampil_jam);
// ActionListener untuk Keperluan Timer
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
String nol_jam = "";
String nol_menit = "";
String nol_detik = "";
// Membuat Date
Date dt = new Date();
// Mengambil nilaj JAM, MENIT, dan DETIK Sekarang
int nilai_jam = dt.getHours();
int nilai_menit = dt.getMinutes();
int nilai_detik = dt.getSeconds();
// Jika nilai JAM lebih kecil dari 10 (hanya 1 digit)
if (nilai_jam <= 9) {
// Tambahkan "0" didepannya
nol_jam = "0";
}
// Jika nilai MENIT lebih kecil dari 10 (hanya 1 digit)
if (nilai_menit <= 9) {
// Tambahkan "0" didepannya
nol_menit = "0";
}
// Jika nilai DETIK lebih kecil dari 10 (hanya 1 digit)
if (nilai_detik <= 9) {
// Tambahkan "0" didepannya
nol_detik = "0";
}
// Membuat String JAM, MENIT, DETIK
String jam = nol_jam + Integer.toString(nilai_jam);
String menit = nol_menit + Integer.toString(nilai_menit);
String detik = nol_detik + Integer.toString(nilai_detik);
// Menampilkan pada Layar
tampil_jam.setText(" " + jam + " : " + menit + " : " + detik + " ");
}
};
// Timer
new Timer(1000, taskPerformer).start();
}
// MAIN
public static void main(String[] args) {
jamDigital jd = new jamDigital();
jd.setTitle("Jam Digital");
jd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jd.setSize(200, 90);
jd.show();
}
} // Akhir Kelas
Eksekusi dan menjalankan program
- javac jamDigital.java
- java jamDigital
Dari hasil eksekusi program di atas dapat dijelaskan langkah-langkah pembuatan dari program jamDigital.java adalah sebagai berikut:
Membuat Class
Nama kelas adalah jamDigital karena nama file yang disimpan diberinama jamDigital.java. Aplikasi ini dirancang dengan menggunakan JFrame, sehingga pada pembuatan kelas harus dilakukan perluasan ke JFrame (extends JFrame).
public class jamDigital extends JFrame {
........
........
}
Proses Jam Digital
Untuk menangai proses Thread, kita akan menggunakan methode Timer yang terdapat pada kelas javax.swing.Timer. Pengaturan pada suatu methode Timer melibatkan pembuatan obyek Timer, mendaftarkan action listener, dan menjalankan Timer tersebut dengan menggunakan methode Start.
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
.........
.........
}
};
New Timer (1000, taskPerformer).start();
Proses pembuatan jam digital diawali dengan mengambil nilai detik, menit, dan jam sekarang dengan menggunakan methode getSeconds(), getMinutes(), getHours().
// Membuat Date
Date dt = new Date();
// Mengambil nilaj JAM, MENIT, dan DETIK Sekarang
int nilai_jam = dt.getHours();
int nilai_menit = dt.getMinutes();
int nilai_detik = dt.getSeconds();
Sebelum menampilkan nilai waktu sekarang pada layar, ada beberapa hal yang harus dilakukan pengecekan yaitu:
Nilai detik
Apabila nilai detik sekarang yang didapat bernilai lebih kecil dari 10, maka didepan nilai detik ditambahkan berupa angka nol (0) sehingga menjadi dua digit angka.
if (nilai_detik <= 9) {
nol_detik = "0";
}
Nilai menit
Apabila nilai menit sekarang yang didapat bernilai lebih kecil dari 10, maka didepan nilai menit ditambahkan berupa angka nol (0) sehingga menjadi dua digit angka.
if (nilai_menit <= 9) {
nol_menit = "0";
}
Nilai jam
Apabila nilai jam sekarang yang didapat bernilai lebih kecil dari 10, maka didepan nilai jam ditambahkan berupa angka nol (0) sehingga menjadi dua digit angka.
if (nilai_jam <= 9) {
nol_jam = "0";
}
Setelah melakukan penyeleksian dengan menggunakan methode pengkondisian if, maka proses yang terakhir adalah mengambil nilai waktu sekarang dan mencetak nilai tersebut ke layar. Untuk merubah dari tipe integer menjadi tipe string, methode yang digunakan adalah Integer.toString(int i).
String jam = nol_jam + Integer.toString(nilai_jam);
String menit = nol_menit + Integer.toString(nilai_menit);
String detik = nol_detik + Integer.toString(nilai_detik);
// Menampilkan pada Layar
tampil_jam.setText(" " + jam + " : " + menit + " : " + detik + " ");
Dasar Teori
Pada percobaan pembuatan rangkaian jam digital kita menggunakan rangkaian yang terdiri dari counter/pencacah : MOD10 untuk satuan (jam, menit dan detik), MOD6 untuk puluhan (menit dan detik) dan MOD2 (untuk puluhan jam), decoder jenisnya adalah Binary to 7Segment, dan display/penampil.
Prinsip kerja yang digunakan adalah prinsip dari jalannya Decoder 7-Segmen. Dimana pada rancangan jam digital ini terdapat bagian-bagian dari fungsi waktu. Yaitu Jam : Menit : Detik. Pada pembuatan jam digital ini akan digunakan pencacah detik,menit, dan jam. Yang akan menjalankan proses jam digital.
Untuk menampilkan display dari jam:menit:detik digunakan Decoder Display 7-Segmen dimana tampilan untuk merepresentasikan jam:menit:detik sebagai berikut:

Tabel kebenaran dari display tersebut adalah sebagai berikut:

Rancangan Awal dan Tugas Persiapan Praktikum
Perancangan rangkaian yang akan diuji adalah:

Analisis Hasil Praktikum
Berikut rangkaian jam digital yang diuji.

Suatu pencacah dan proses decode yang sangat menarik adalah dalam perancangan jam digital. Penyedia daya bagi sebuah jam biasa (jam, menit, detik) adalah daya komersial arus bolak-balik 120 Volt, 0.6 kHz. Untuk mendapatkan pulsa-pulsa yang berlangsung pada laju 1 detik diperlukan untuk membagi sumber daya 0.6 kHz dengan 60. Jika gelombang segi-empat 0.01kHz dibagi lagi dengan 60, dihasilkan gelombang segi-empat 1 daur permenit. Jika dibagi lagi dengan 60 maka akan menghasilkan gelombang segi-empat 1 daur perjam.

Diagram blok di atas memperlihatkan fungsi-fungsi pencacahan. Pencacah :60 pertama membagi sinyal daya 0.6 kHz menjadi gelombang segi-empat 0.01 kHz. Pencacah :60 kedua berubah keadaan sekali setiap detik dan mempunyai 60 keadaan diskrit, dan dengan demikian dapat didekode untuk menghasilkan sinyal yang memperagakan detik. Pencacah ini kemudian disebut pencacah detik. Pencacah :60 ketiga berubah keadaan sekali setiap menit dan memiliki 60 keadaan diskrit. Dengan demikian pencacah ini dapat didekode untuk menghasilkan sinyal yang memperagakan menit. Pencacah ini disebut pencacah menit. Pencacah terakhir berubah sekali setiap 60 menit (setiap jam). Dan menghasilkan sinyal yang memperagakan jam, disebut pencacah jam.
Untuk mengatur jam digital perlu adanya pengesetan. Makanya harus diperoleh suatu sarana untuk mengeset jam, karena bila daya dimatikan dan kemudian dihidupkan kembali flip-flop akan berada pada keadaan acak. Pengesetan dilakukan dengan menggunakan tombol tekan set. Pengesetan dilakukan dengan menekan tombol set jam, set menit, set detik.

Dengan demikian Jam Digital dapat dijalankan.
Sumber
Hak Cipta Dokumen © 2007 javaku.wordpress.com dan Adi Purnomo
Dukumen ini dapat digunakan, dirubah, maupun disebarkan secara bebas untuk tujuan apa saja baik itu bersifat komersial maupun tidak komersial, dengan syarat selalu menyertakan nama penulis dan judul asli dari tulisan ini.