Skip to main content

Jam Analog Java

Jam analog, selalu menjadi pembuktian pribadi kalo aku bisa sebuah bahasa pemrograman baru. Dengan cuma mengandalkan logika dari matematika sederhana, "Trigonometri". Misalkan, derajat jarum jam merupakan hasil perbandingan dengan nilai kosinus dan sinus. Akhirnya, jadilah sebuah jam dengan menggunakan class dasar awt, frame, math, dan Calendar. Dengan pembuatan selama tiga hari ngotak-ngatik javadoc, saat masih buta java beberapa tahun lalu, akhirnya bisa mengerti dasar pemrograman OOP dari java.
Sebenarnya, program seperti ini selalu menjadi pemicu utama ketertarikan untuk belajar dan terus belajar, sayangnya entah kenapa sekarang kehilangan semua itu di saat sangat dibutuhkan untuk belajar hal baru. Juga buat teman-temanku yang sedang membuat TA, semangat terus, seamuanya bisa kalo mau belajar, especially for me.
Source kodenya:

//Source:
import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;
import java.util.Random;
public class Ana extends Frame {
private int PusatX,PusatY,xorR,xorG,xorB;
Random Rdm;
public Ana(){
super("om_agus Klok_klok");
setLayout(new FlowLayout());
setSize(800,600);
addWindowListener(new WindowListener(){
public void windowActivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowDeactivated(WindowEvent e){}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
});
Rdm=new java.util.Random();
setBackground(Color.black);
new javax.swing.Timer(100,new ActionListener(){
public void actionPerformed(ActionEvent ev){
repaint();
PusatX=getWidth()/2;
PusatY=getHeight()/2;
xorR=Rdm.nextInt(255);
xorG=Rdm.nextInt(255);
xorB=Rdm.nextInt(255);
}
}).start();
}
public static void main(String[]a){
new Ana().setVisible(true);
}
public void paint(Graphics G){

G.setColor(Color.BLACK);
G.setColor(Color.red);int Panjang;
if(getWidth()<getHeight())Panjang=getWidth()-100;
else Panjang=getHeight()-100;
G.drawOval(PusatX-Panjang/2,PusatY-Panjang/2,Panjang,Panjang);

G.setColor(Color.white);
for(int I=1;I<=12;I++){
G.fillOval((int)(PusatX+Math.sin(30*Math.PI*I/180)*Panjang/2),(int)(PusatY+Math.cos(30*Math.PI*I/180)*-1*Panjang/2),5,5);
G.drawString(""+I,(int)(PusatX+Math.sin(30*Math.PI*I/180)*Panjang/2.2),(int)(PusatY+Math.cos(30*Math.PI*I/180)*-1*Panjang/2.2));
}

G.setXORMode(new Color(xorR,xorG,xorB));

float Detik=Waktu(Calendar.SECOND)+(float)Waktu(Calendar.MILLISECOND)/1000;
G.setColor(Color.white);
G.drawLine(PusatX,PusatY,(int)(PusatX+(Math.sin(2*Math.PI*Detik/60)*Panjang/2)),(int)(PusatY+(-1*Math.cos(2*Math.PI*Detik/60)*Panjang/2)));

float Menit=Waktu(Calendar.MINUTE)+(float)Detik/60;
G.setColor(Color.green);
G.drawLine(PusatX,PusatY,(int)(PusatX+(Math.sin(2*Math.PI*Menit/60)*Panjang/2.1)),(int)(PusatY+(-1*Math.cos(2*Math.PI*Menit/60)*Panjang/2.1)));

float Jam=Waktu(Calendar.HOUR)+(float)Menit/60;
G.setColor(Color.BLUE);
G.drawLine(PusatX,PusatY,(int)(PusatX+(Math.sin(2*Math.PI*Jam/12)*Panjang/2.3)),(int)(PusatY+(-1*Math.cos(2*Math.PI*Jam/12)*Panjang/2.3)));

G.fillOval(PusatX-5,PusatY-5,10,10);
}
private int Waktu(int Jenis){
return Calendar.getInstance().get(Jenis);
}
}

Ganbatte kudasai!

Comments

  1. Aku Copy Yo mas

    main ke Blog ku dong

    ReplyDelete
  2. mas , dia minta extend frame nya mas, minta source code yang frame nya juga mas, terima kasih ..

    ReplyDelete
  3. @adhaputraa
    frame itu class dasar java.awt.Frame, jadi seharusnya sudah ada di JDK

    ReplyDelete
  4. om sy kan udh bikin 4 jam dengan tutorial di atas dengan satu frame. tinggal nentuin jarum jamnya gimana om caranya ? < mentok disitu sy om.

    ReplyDelete
  5. KAK ITU PAKE JFRAME LANGSUNG APA LANGSUNG SCRIPTNYA KAK

    ReplyDelete
  6. @Marcel Arjuan
    di skripnya udah dibuat Frame, jadi langsung aja

    ReplyDelete
  7. gan klo mau ditaro aplikasinya didekstop terus diklik 2x jamnya jalan itu gimana ?

    ReplyDelete

Post a Comment

Popular posts from this blog

KISS: Complete Ubuntu Server Configuration

The Simplest way to install and configure our Ubuntu Server Edition. With this step-by-step manual instalation, we can configure Network, Internet, APT instalation source, XAMPP for Linux, Apache Web server, ProFtpd Ftp Server, PHP, MySql Database Server, Samba file sharing, Squid proxy server. A. Network And Internet Configuration 1. Intall Ubuntu Server Edition, I prefer using 8.04 LTS, a stable build with long time support, even better than the newer ones, in my opinion. Login as root or use this command to become root for user in sudoers list. # sudo su 2. Now, Change the hostname # pico /etc/hosts 127.0.0.1 localhost //Don't change this 192.168.1.12 hercules //Change with your ip address and hostname ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts 3. Make configuration for network interfaces # pico /etc/network/interfaces # This file describes the network interfaces available on your s...

Java: Pengiriman Parameter antar Frame

Sebenarnya konsep ini berlaku bukan hanya pada frame, tapi bisa dilakukan antar object dari class yang sifatnya umum, karena Java yang sifatnya sudah full OOP. Tapi, karena lebih sering diterapkan dalam pemrograman GUI desktop, khususnya dengan Netbeans, maka dicontohkan dengan class javax.swing.JFrame. Setiap bentuk code java harus dibentuk dalam bentuk class, biar sebagaimanapun sederhananya. Tidak seperti pemrograman lainnya yang menggunakan konsep OOP sebagai tambahan dan pengembangan dari yang sudah ada sebelumnya. Itulah sebabnya kita mengenal class di C++, Pascal, PHP, tapi masih diperbolehkan untuk tetap menggunakan konsep primitif. Sedangkan pada kasus java dan .NET, OOP merupakan inti utamanya yang harus selalu diikuti dan diterapkan. Awalnya akan sangat membingungkan, tapi sangat mudah untuk langkah pengembangan selanjutnya. Sudah lihat JavaDoc? itu adalah dokumen pemrograman yang paling aneh didunia, pada pandangan pertama. Coba bandingkan dengan MSDN-nya .NET, PHP Manual, ...

Java-MySql: Aplikasi Database dengan Data Gambar (Updated)

Untuk update metode simpan gambar lihat di appGambar 2.0 Bagaimana caranya menyimpan data yang membutuhkan penyimpanan data gambar? Misalkan data pegawai yang membutuhkan penyimpanan gambar dari setiap pegawai. Alternatifnya ada dua, dengan kelebihan dan kekurangan masing-masing. Cara yang pertama adalah dengan membuat field dengan tipe data binary, kemudian menyimpan gambar yang dibutuhkan dalam field di database tersebut. Cara ini membutuhkan manajemen program yang lebih rumit, tapi data gambar akan terjamin, karena tersimpan didalam database yang terintegrasi dengan data lainnya. Kekurangan lainnya adalah ukuran database yang akan membesar dan lambat. Bayangkan saja, sebuah field membutuhkan gambar dengan format jpeg, 200kB. Apabila ada 200 juta record, maka ukuran field yang diperuntukan khusus untuk gambar dengan perhitungan kasar adalah 0.2 MB x 200M = 40 x 10^12 = 40 TB. Belum ditambah dengan ukuran data dari field lainnya, kalau misalkan untuk menyimpan data penduduk Indonesia....