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