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!
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,
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!
Aku Copy Yo mas
ReplyDeletemain ke Blog ku dong
Iya
ReplyDeletemas , dia minta extend frame nya mas, minta source code yang frame nya juga mas, terima kasih ..
ReplyDelete@adhaputraa
ReplyDeleteframe itu class dasar java.awt.Frame, jadi seharusnya sudah ada di JDK
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.
ReplyDeleteKAK ITU PAKE JFRAME LANGSUNG APA LANGSUNG SCRIPTNYA KAK
ReplyDelete@Marcel Arjuan
ReplyDeletedi skripnya udah dibuat Frame, jadi langsung aja
gan klo mau ditaro aplikasinya didekstop terus diklik 2x jamnya jalan itu gimana ?
ReplyDeletemakasih mas
ReplyDeletemakasih mas
ReplyDelete