Anda di halaman 1dari 24

MODUL 6

Praktikum Pemrograman Object 2

22 April 2020

Nama : Yesi Sofia


NIM : 3411181140
Kelas :B

JURUSAN TEKNIK INFORMATIKA

FAKULTAS SAINS DAN INFORMATIKA

UNIVERSITAS JENDERAL ACHMAD YANI

2020
DAFTAR ISI
DAFTAR ISI................................................................................................................................................. i
BAB I ............................................................................................................................................................ 1
PEMBAHASAN .......................................................................................................................................... 1
BAB 2 ........................................................................................................................................................... 2
EKSEKUSI PROGRAM DAN HASIL ANALISA .................................................................................. 2
2.1 Program 6 -1 ................................................................................................................................. 2
2.2 Program 6-2 .................................................................................................................................. 2
2.3 Program 6-3 .................................................................................................................................. 3
2.4 Program 6-4 .................................................................................................................................. 4
2.5 Program 6-5 .................................................................................................................................. 5
2.6 Program 6-6 .................................................................................................................................. 6
2.7 Program 6-7 .................................................................................................................................. 8
2.8 Program 6-8 .................................................................................................................................. 9
2.9 Program 6-9 ................................................................................................................................ 10
BAB 3 ......................................................................................................................................................... 16
TUGAS AKHIR ........................................................................................................................................ 16
3.1 Using JPopup Menus .................................................................................................................. 16
3.2 Drawing 2D Shapes .................................................................................................................... 18
Bab 4........................................................................................................................................................... 21
TUGAS GIT .............................................................................................................................................. 21
DAFTAR PUSTAKA .................................................................................................................................. ii

i
BAB I

PEMBAHASAN

Hirarki Graphics2D

Java 2D adalah API untuk menggambar grafik dua dimensi menggunakan bahasa
pemrograman Java. Java 2D adalah teknologi yang powerfull untuk digunakan membuat
antarmuka pengguna yang kaya akan penampilan, permainan, animasi, aplikasi multimedia atau
berbagai efek khusus. Kemampuan Java dalam hal ini adalah, menggambar bentuk 2 dimensi,
mengatur warna dan font. Kelas dan interface yang digunakan untuk membuat grafik dalam Java
adalah :

1) Class Color terdiri dari method dan konstanta untuk memanipulasi colors,
2) Class JComponent terdiri dari method paintComponent, yang digunakan untuk
menggambar grafik pada component,
3) Class Font terdiri dari method dan konstanta untuk memanipulasi font,
4) Class FontMetrics terdiri dari method untuk mendapatkan informasi font,
5) Class Graphics terdiri dari method untuk menggambar strings, lines, rectangles bentuk
lainnya,
6) Class Graphics2D, turunan dari class Graphics, digunakan untuk menggambar dengan Java
2D API,
7) Class Polygon
8) Class BasicStroke
9) Class GradientPaint dan TexturePaint

1
BAB 2

EKSEKUSI PROGRAM DAN HASIL ANALISA


2.1 Program 6 -1
A. Program 6-1 ControlJPanel.java
Source code
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

public class ColorJPanel extends JPanel {


public void paintComponent (Graphics g) {
super.paintComponent(g);
this.setBackground(Color.WHITE);
g.setColor(new Color(255,0,0));
g.fillRect(15, 25, 100, 20);
g.drawString("Current RGB:"+ g.getColor(), 130 ,
40);
g.setColor(new Color(0.50f , 0.75f, 0.0f));
g.fillRect(15, 50, 100, 20);
g.drawString("Current RGB:"+ g.getColor(), 130 ,
65);
g.setColor(Color.BLUE);
g.fillRect(15, 75, 100, 20);
g.drawString("Current RGB:"+ g.getColor(), 130 ,
90);

Color color = Color.MAGENTA;


g.setColor(color);
g.fillRect(15, 100, 100, 20);
g.drawString("RGB values: ", 130,115);
}
}

Analisis
Program ControlJPanel.java merupakan contoh dari penggunaan dari method
paintComponent() Di dalam method tersebut terdapat beberapa method yang di
gunakan untuk menggambar graphics dengan parameter nya adalah g bertipe Graphics.
setColor() di sini berfungsi untuk mengatur warna dari object graphics juga bisa untuk
mengatur warna string.

2.2 Program 6-2

2
A. Program 6-2 ShowColors.java
Source code
import javax.swing.JFrame;

public class ShowColors {


public static void main (String args[]) {
JFrame frame = new JFrame("using colors");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ColorJPanel colorJPanel = new ColorJPanel();

frame.add(colorJPanel);
frame.setSize(400,180);
frame.setVisible(true);
}
}

Hasil eksekusi Program

Analisis
Program ShowColors merupakan main program dari class ColorJPanel. Di main
program ini menampilkan dari setiap current RGB yang dimana setiap angka memiliki
warna dan apabila disatukan menjadi sebuah warna tampilan.

2.3 Program 6-3


A. Program 6-3 ShowColors2JFrame.java
Source code
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JColorChooser;

3
import javax.swing.JPanel;

public class ShowColors2JFrame extends Frame{


private JButton changeColorJButton;
private Color color = Color.LIGHT_GRAY;
private JPanel colorJPanel;

public ShowColors2JFrame() {
super("Using JColorChooser");
colorJPanel = new JPanel();
colorJPanel.setBackground( color );
changeColorJButton = new JButton("Change Color");
changeColorJButton.addActionListener(
new ActionListener() {
public void
actionPerformed(ActionEvent event) {
color =
JColorChooser.showDialog(ShowColors2JFrame.this, "Choose a
color", color);
if(color == null) {
color = Color.LIGHT_GRAY;

colorJPanel.setBackground( color );
}
}
} );
add(colorJPanel, BorderLayout.CENTER);
add(changeColorJButton, BorderLayout.SOUTH);
setSize(400,130);
setVisible(true);
}

public void setDefaultCloseOperation(int exitOnClose) {


// TODO Auto-generated method stub

}
}

Analisis
Program ShowColors2JFrame merupakan Class JFrame yang terdapat sebuah object
Jbutton yang memiliki actionlistener. Jika button di klik makan akan muncul sebuah
JColorChoiser jika warna telah di pilih maka background dari si JFrame akan berubah
sesuai dengan apa yang dipilih. Untuk default warna JFrame nya dia atur dengan warna
LIST_GRAY

2.4 Program 6-4


A. Program 6-4 ShowColors2.java

4
Source code
import javax.swing.JFrame;

public class ShowColors2 {


public static void main(String [] args) {
ShowColors2JFrame application = new
ShowColors2JFrame();

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLO
SE);
}
}

Hasil eksekusi Program

Analisis
Program ShowColors2 memanggil class ShowColors2JFrame sehinga dapat
menampilkan hasil seperti pada gambar diatas , yaitu membuat background bisa diubah
warnanya sesuai yang diinginkan.

2.5 Program 6-5


A. Program Shapess.java
Source code

5
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Shapess extends JPanel{


int xPoints[] = new int[] {300, 420, 360};
int yPoints[] = new int[] {120, 120, 20};
public Shapess(){
setLayout(null);
setSize(600,180);
}
public void paint(Graphics g) {
g.fillArc(20, 20, 100, 100, 180, 180);
g.fillOval(150, 20, 120, 100);
g.fillPolygon(xPoints, yPoints, 3);
g.fillRect(450, 20, 100, 100);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Shapes");
Shapess shapess = new Shapess();

frame.setLayout(null);
frame.add(shapess);
frame.setSize(600, 180);
frame.setVisible(true);
}

Hasil eksekusi program

Analisis
Program shapess menampilkan suatu fillrect yang terdiri dari beberapa angka yang
menampilkan beberapa gambar seperti pada gambar di atas.

2.6 Program 6-6


A. Program 6-6 shape2D.java

6
Source code
import java.awt.Graphics;
import java.awt.BasicStroke;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.geom.Arc2D;
import java.awt.geom.Line2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author Yesi Shofia
*/
public class Shape2D extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;

//draw Line2D.Double
g2.draw(new Line2D.Double(80,30,20,120));

//draw Rectangle2D
g2.setStroke(new BasicStroke(3.0f));
g2.draw(new Rectangle2D.Double(100, 60, 90,50));

//draw RoundRectangle2D.DOuble
float dashes[] = {10};
g2.setStroke(new BasicStroke(4,
BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND, 10, dashes,
0));
g2.draw(new
RoundRectangle2D.Double(220,60,80,50,10,10));

//draw Arc2D.double
g2.setStroke(new BasicStroke(3.0f));
g2.draw(new Arc2D.Double(350, 30,75, 100, 0,
270,Arc2D.OPEN));
}

public static void main(String []args) {


JFrame frame = new JFrame("Drawing 2d Shapes");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Shape2D shape2d = new Shape2D();
frame.add(shape2d);
frame.setSize(500, 300);
frame.setVisible(true);
}
}

Hasil eksekusi program

7
Analisis
Program Shape2D menampilkan bentuk dari gambar yang sudah di set menggunakan
g2.draw yang dimana bentuk dari gambar diatas di atur di dalam g2.draw tersebut.

2.7 Program 6-7


A. Program 6-7 ShapesJPanel.java
Source code
import java.awt.Color;
import java.awt.Graphics;
import java.awt.BasicStroke;
import java.awt.GradientPaint;
import java.awt.TexturePaint;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.geom.Arc2D;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;

public class ShapesJPanel extends JPanel{


public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setPaint(new GradientPaint(5, 30, Color.BLUE,
35, 100, Color.YELLOW, true));
g2d.fill(new Ellipse2D.Double(5, 30, 65, 100));
g2d.setPaint(Color.RED);
g2d.setStroke(new BasicStroke(10.0f));
g2d.draw(new Rectangle2D.Double(80, 30, 65,100));
BufferedImage buffImage = new BufferedImage(10,
10, BufferedImage.TYPE_INT_RGB);
Graphics2D gg = buffImage.createGraphics();
gg.setColor(Color.YELLOW);
gg.fillRect(0, 0, 10, 10);
gg.setColor(Color.BLACK);

8
gg.drawRect(1, 1, 6, 6);
gg.setColor(Color.BLUE);
gg.fillRect(1, 1, 3, 3);
gg.setColor(Color.RED);
gg.fillRect(4, 4, 3, 3);
g2d.setPaint(new TexturePaint(buffImage,new
Rectangle(10,10)));
g2d.fill(new
RoundRectangle2D.Double(155,30,75,100,50,50));
g2d.setPaint(Color.WHITE);
g2d.setStroke(new BasicStroke(6.0f));
g2d.draw(new Arc2D.Double(240, 30,75, 100, 0,
270, Arc2D.PIE));
g2d.setPaint(Color.GREEN);
g2d.draw(new Line2D.Double(395,30,320,150));

float dashes[] = {10};


g2d.setPaint(Color.YELLOW);
g2d.setStroke(new BasicStroke(4,
BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND, 10, dashes,
0));
g2d.draw( new Line2D.Double(320,30,395,150));
}
}

Analisis
Program ini merupakan contoh program 2D graphics tapi tidak akan menampilkan
apapun karena program ini tidak mempunyai main method dimana menggunakan
setPaint yang terdapat gambar dan warna yang ada diatas dan bisa diatur sesuai
keinginan

2.8 Program 6-8


A. Program 6-8 Shapes.java
Source code
import javax.swing.JFrame;

public class Shapes {


public static void main(String []args) {
JFrame frame = new JFrame("Drawing 2d Shapes");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ShapesJPanel ShapesJPanel = new ShapesJPanel();
frame.add( ShapesJPanel);
frame.setSize(425, 200);
frame.setVisible(true);
}

9
}

Hasil Eksekusi Program

Analisis
Program shapes merupakan main method dari program ShapesJPanel dimana
menggunakan setPaint yang terdapat gambar dan warna yang ada di class shapesJPanel
dan bisa diatur sesuai keinginan
2.9 Program 6-9
A. Program 6-9 StorakeAndFill.java
Source code
import java.lang.Integer;
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.*;
/**
*
* @author Yesi Shofia
*/
public class StrokeAndFill extends JApplet implements
ItemListener {
JLabel primLabel, lineLabel, paintLabel, strokeLabel;
ShapePanel display;
static JComboBox primitive, line, paint,stroke;
int index=0;
public static boolean no2D=false;

public void init(){


GridBagLayout layout=new GridBagLayout();
getContentPane().setLayout(layout);

10
GridBagConstraints c=new GridBagConstraints();

c.weightx=1.0;
c.fill=GridBagConstraints.BOTH;
primLabel=new JLabel();
primLabel.setText("Primitive");
Font newFont=getFont().deriveFont(1);
primLabel.setHorizontalAlignment(JLabel.CENTER);
layout.setConstraints(primLabel, c);
getContentPane().add(primLabel);

lineLabel=new JLabel();

lineLabel.setText("Lines");
lineLabel.setFont(newFont);
lineLabel.setHorizontalAlignment(JLabel.CENTER);
layout.setConstraints(lineLabel, c);
getContentPane().add(lineLabel);

c.gridwidth=GridBagConstraints.RELATIVE;
paintLabel=new JLabel();
paintLabel.setText("Paints");
paintLabel.setFont(newFont);
paintLabel.setHorizontalAlignment(JLabel.CENTER);
layout.setConstraints(paintLabel, c);
getContentPane().add(paintLabel);

c.gridwidth=GridBagConstraints.REMAINDER;
strokeLabel=new JLabel();
strokeLabel.setText("Rendering");
strokeLabel.setFont(newFont);
strokeLabel.setHorizontalAlignment(JLabel.CENTER);
layout.setConstraints(strokeLabel, c);
getContentPane().add(strokeLabel);

GridBagConstraints ls=new GridBagConstraints();


ls.weightx=1.0;
ls.fill=GridBagConstraints.BOTH;

primitive=new JComboBox(new Object[]{


"rectangle","ellipse","text"
});
primitive.addItemListener(this);
newFont=newFont.deriveFont(0,14.0f);
primitive.setFont(newFont);
layout.setConstraints(primitive, ls);
getContentPane().add(primitive);

line=new JComboBox(new Object[]{


"thin","thick","dashed"
});
line.addItemListener(this);
line.setFont(newFont);
layout.setConstraints(line, ls);
getContentPane().add(line);

ls.gridwidth=GridBagConstraints.RELATIVE;

11
paint=new JComboBox(new Object[]{
"solid","gradient","polka"
});
paint.addItemListener(this);
paint.setFont(newFont);
layout.setConstraints(paint, ls);
getContentPane().add(paint);

ls.gridwidth=GridBagConstraints.REMAINDER;
stroke=new JComboBox(new Object[]{
"Stroke","Fill","Stroke&Fill"
});
stroke.addItemListener(this);
stroke.setFont(newFont);
layout.setConstraints(stroke, ls);
getContentPane().add(stroke);

GridBagConstraints sC=new GridBagConstraints();


sC.fill=GridBagConstraints.BOTH;;
sC.weightx=1.0;
sC.weighty=1.0;
sC.gridwidth=GridBagConstraints.REMAINDER;
display=new ShapePanel();
layout.setConstraints(display, sC);
display.setBackground(Color.white);
getContentPane().add(display);

validate();
}

public void itemStateChanged(ItemEvent e){


display.renderShape();
}

public static void main(String[] argv){


if(argv.length>0&&argv[0].equals("-no2d")){
StrokeAndFill.no2D=true;
}
JFrame frame=new JFrame("StrokeAndFill");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
JApplet applet =new StrokeAndFill();

frame.getContentPane().add(BorderLayout.CENTER,applet);

applet.init();

frame.setSize(450,250);
frame.show();
}
}

class ShapePanel extends JPanel{


BasicStroke bstroke=new BasicStroke(3.0f);

12
int w,h;
Shape shapes[]=new Shape[3];

public ShapePanel(){
setBackground(Color.white);
shapes[0]=new Rectangle(0,0,100,100);
shapes[1]=new Ellipse2D.Double(0.0,0.0,100.0,100.0);
TextLayout textTl=new TextLayout("Text",
new
Font("Helvetica",1,96),
new
FontRenderContext(null,false,false));
AffineTransform textAt=new AffineTransform();

textAt.translate(0,(float)textTl.getBounds().getHeight());
shapes[2]=textTl.getOutline(textAt);
}

//invokes the paint method


public void renderShape(){
repaint();
}

public void paintCOmponent(Graphics g){


super.paintComponent(g);
if(!StrokeAndFill.no2D){
Graphics2D g2=(Graphics2D) g;
Dimension d=getSize();
w=d.width;
h=d.height;
int width,height;

//Prints the initial instructions


String instruct = "Pick a primitive, line style,
paint, and rendering method";
TextLayout thisTl=new TextLayout(instruct, new
Font("Helvetica",0,10),g2.getFontRenderContext());
Rectangle2D bounds=thisTl.getBounds();
width=(int)bounds.getWidth();
thisTl.draw(g2,w/2-width/2,20);

Stroke oldStroke=g2.getStroke();

//sets the stroke


switch(StrokeAndFill.line.getSelectedIndex()){
case 0: g2.setStroke(new BasicStroke(3.0f));
break;
case 1: g2.setStroke(new BasicStroke(8.0f));
break;
case 2: float dash[]={10.0f};
g2.setStroke(new BasicStroke(3.0f,
BasicStroke.CAP_BUTT,

BasicStroke.JOIN_MITER,10.0f,dash,0.0f));
break;
}

13
Paint oldPaint=g2.getPaint();
//sets the paint
switch(StrokeAndFill.paint.getSelectedIndex()){
case 0: g2.setPaint(Color.blue);break;
case 1: g2.setPaint(new
GradientPaint(0,0,Color.lightGray,w-250,h,Color.blue,false));
break;
case 2: BufferedImage bi=new
BufferedImage(5,5,BufferedImage.TYPE_INT_RGB);
Graphics2D big=bi.createGraphics();
big.setColor(Color.blue);
big.fillRect(0,0,5,5);
big.setColor(Color.lightGray);
big.fillOval(0,0,5,5);
Rectangle r=new Rectangle(0,0,5,5);
g2.setPaint(new TexturePaint(bi,r));
break;
}

//sets the shape


Shape
shape=shapes[StrokeAndFill.primitive.getSelectedIndex()];
Rectangle r=shape.getBounds();

//sets the selected Shape to the center of the


Canvas
AffineTransform saveXform=g2.getTransform();
AffineTransform toCenterAt=new AffineTransform();
toCenterAt.translate(w/2-(r.width/2),h/2-
(r.height/2));
g2.transform(toCenterAt);

//determines whether to fill, stroke, or fill and


stroke
switch(StrokeAndFill.stroke.getSelectedIndex()){
case 0: g2.draw(shape);break;
case 1: g2.fill(shape);break;
case 2: Graphics2D tempg2=g2;
g2.fill(shape);
g2.setColor(Color.darkGray);
g2.draw(shape);
g2.setPaint(tempg2.getPaint()); break;
}
g2.setTransform(saveXform);
g2.setStroke(oldStroke);
g2.setPaint(oldPaint);
}else{
g.drawRect(0,0,100,100);
}
}
}

Hasil eksekusi program

14
Analisis
Pada program ini menampilkan primitive, lines, paints dan rendering yang isinya
eclipse, thick, polka dan stroke & fill

15
BAB 3

TUGAS AKHIR
3.1 Using JPopup Menus
Source code
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.ButtonGroup;

public class PopupFrame extends JFrame


{
private JRadioButtonMenuItem items[];
private final Color colorValues[] =
{ Color.BLUE, Color.YELLOW, Color.RED };
private JPopupMenu popupMenu;

public PopupFrame()
{
super( "Using JPopupMenus" );

ItemHandler handler = new ItemHandler();


String colors[] = { "Blue", "Yellow", "Red" };

ButtonGroup colorGroup = new ButtonGroup();


popupMenu = new JPopupMenu();
items = new JRadioButtonMenuItem[ 3 ];

for ( int count = 0; count < items.length; count++ )


{
items[ count ] = new JRadioButtonMenuItem( colors[ count ]
);
popupMenu.add( items[ count ] );
colorGroup.add( items[ count ] );
items[ count ].addActionListener( handler );
}

setBackground( Color.WHITE );

addMouseListener(

new MouseAdapter()
{
public void mousePressed( MouseEvent event )
{
checkForTriggerEvent( event );
}

16
public void mouseReleased( MouseEvent event )
{
checkForTriggerEvent( event );
}

private void checkForTriggerEvent( MouseEvent event )


{
if ( event.isPopupTrigger() )
popupMenu.show(
event.getComponent(), event.getX(),
event.getY() );
}
}
);
}

private class ItemHandler implements ActionListener


{
public void actionPerformed( ActionEvent event )
{
for ( int i = 0; i < items.length; i++ )
{
if ( event.getSource() == items[ i ] )
{
getContentPane().setBackground( colorValues[ i ] );
return;
}
}
}
}
}
import javax.swing.JFrame;

public class PopupTest


{
public static void main( String args[] )
{
PopupFrame popupFrame = new PopupFrame();
popupFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
popupFrame.setSize( 300, 200 );
popupFrame.setVisible( true );
}
}

Hasil eksekusi program

17
Analisis
Program PopupTest ini untuk mengubah background atau warna frame dengan cara
mengklik kanan mouse atau touchpad dan lain sebagainya, nanti akan menampilkan
popup yang terdiri 3 pilhan; Blue, Yellow, Red , pilih satu warna dan kemudian warna
background akan berubah sesuai permintaan.

3.2 Drawing 2D Shapes


Source code
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.util.Random;
import javax.swing.JPanel;

public class shapes1 extends JPanel {


// draw general paths
public void paintComponent( Graphics g ){
super.paintComponent( g ); // call superclass's
paintComponent
Random random = new Random(); // get random number
generator

int xPoints[] = { 55, 67, 109, 73, 83, 55, 27, 37, 1, 43
};
int yPoints[] = { 0, 36, 36, 54, 96, 72, 96, 54, 36, 36
};

Graphics2D g2d = ( Graphics2D ) g;


GeneralPath star = new GeneralPath(); // create
GeneralPath object

// set the initial coordinate of the General Path


star.moveTo( xPoints[ 0 ], yPoints[ 0 ] );

// create the star--this does not draw the star


for ( int count = 1; count < xPoints.length; count++ )
star.lineTo( xPoints[ count ], yPoints[ count ] );

18
star.closePath(); // close the shape

g2d.translate( 200, 200 ); // translate the origin to


(200, 200)

// rotate around origin and draw stars in random colors


for ( int count = 1; count <= 20; count++ ) {
g2d.rotate( Math.PI / 10.0 ); // rotate
coordinate system

// set random drawing color


g2d.setColor( new Color( random.nextInt( 256
),
random.nextInt( 256 ),
random.nextInt( 256 ) ) );

g2d.fill( star ); // draw filled star


} // end for
}
}// end method paintComponent

import java.awt.Color;
import javax.swing.JFrame;

public class shapes2 {


public static void main( String args[] ){
JFrame frame = new JFrame( "Drawing 2D Shapes" );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
shapes1 shapes2JPanel = new shapes1();
frame.add( shapes2JPanel ); // add shapes2JPanel to
frame
frame.setBackground( Color.WHITE ); // set frame
background color
frame.setSize( 400, 400 ); // set frame size
frame.setVisible( true ); // display frame
} // end main
}

Hasil eksekusi program

19
Analisis
Program tugas 2 ini yaitu Shapesl dan Shapes2 dapat membuat shapes bintang yang
banyak dan diletakan melingkar sehingga membentuk seperti lingkaran dan apabila
ukuran frame ditarik (diperbesar / diperkecil)warna masing masing bintang akan
berubah ubah (random)

20
Bab 4

TUGAS GIT
Membuat Project modul 6

Graph

21
DAFTAR PUSTAKA

Yuniarti.R.[2020].Pemrograman Objek II

ii

Anda mungkin juga menyukai