Bintang part II
- Forums:
Melanjutkan contoh dari Bintang I, kali ini kita akan mencoba membuat 50 bintang bertaburan (letaknya bebas), warna-warni, berbeda ukuran, dan berbeda segi. Berikut ini adalah source code-nya :
class untuk Kanvas :
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Kanvas
{ public static void main(String[] args)
{ SwingUtilities.invokeLater(new Runnable()
{ public void run()
{ JFrame frame = new JFrame("Sekarang pake Label");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Bintang3 t = new Bintang3();
t.setPreferredSize(new Dimension(600, 600));
frame.getContentPane().add(t);
frame.pack();
frame.setVisible(true);
}
});
}
}
class untuk gambar Bintang :
import javax.swing.JPanel;
import java.awt.*;
import java.util.Random;
class Bintang3 extends JPanel
{ static double degToRad(int deg) {
return ((2*3.14)/360)*deg;
}
public void paintComponent(Graphics g)
{ super.paintComponent(g);
Random acak = new Random();
Color[] warna={Color.red, Color.blue, Color.black, Color.cyan,
Color.yellow, Color.green, Color.orange, Color.pink};
int r, segi, x0, y0;
for(int i=0;i<50;i++)
{ r=acak.nextInt(90)+10;
segi=acak.nextInt(10)+5;
x0=acak.nextInt(300)+100;
y0=acak.nextInt(300)+100;
gbrBintang(g, r, segi, x0, y0, warna[i%8]);
}
}
private void gbrBintang(Graphics g,int r,int segi,int x0,
int y0,Color warna)
{ int[] x=new int[segi];
int[] y=new int[segi];
int sudut=(int)360/segi;
for(int i=0;i<segi;i++)
{ x[i]=(int)Math.round(x0 + r * Math.cos(degToRad(sudut * i-90)));
y[i]=(int)Math.round(y0 + r * Math.sin(degToRad(sudut * i-90)));
}
g.setColor(warna);
for(int i=0;i<segi-1;i++)
for(int j=i+2;j<segi;j++){
if(i==0 && j==segi-1) continue;
g.drawLine(x[i], y[i], x[j], y[j]);
}
}
}
| Butuh penjelasan...??? Silahkan bertanya. |
