0% found this document useful (0 votes)
199 views17 pages

Laporan Akhir Praktikum Pemrograman Objek 2 Modul 6 Graphics 2D

This document summarizes the results and assignments from a graphics 2D programming laboratory. It discusses 6 programs that demonstrate drawing different shapes and colors using graphics and Swing components in Java. The programs allow selecting colors, drawing rectangles, ovals, arcs, lines, and polygons. Screenshots show the output of each program.

Uploaded by

lena lena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
199 views17 pages

Laporan Akhir Praktikum Pemrograman Objek 2 Modul 6 Graphics 2D

This document summarizes the results and assignments from a graphics 2D programming laboratory. It discusses 6 programs that demonstrate drawing different shapes and colors using graphics and Swing components in Java. The programs allow selecting colors, drawing rectangles, ovals, arcs, lines, and polygons. Screenshots show the output of each program.

Uploaded by

lena lena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 17

LAPORAN AKHIR

PRAKTIKUM PEMROGRAMAN OBJEK 2

MODUL 6
GRAPHICS 2D

Disusun oleh:

Ezra Mae Crisnaweni 3411201084

Kelas C

PROGRAM STUDI INFORMATIKA

FAKULTAS SAINS DAN INFORMATIKA

UNIVERSITAS JENDERAL ACHMAD YANI

2022
BAB I
HASIL DAN TUGAS PRAKTIKUM

1.1 Program 6-1. ColorJPanel.java


- Source Code
package modul6;

import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JPanel;
/**
*
* @author acer
*/
public class ColorJPanel extends JPanel {
public void paintComponent(Graphics g){
super.paintComponent( g );
this.setBackground( Color.WHITE);

//set new draw


g.setColor(new Color(255, 0, 0) );
g.fillRect(15,25,100,20);
g.drawString("CurrentRGB:"+g.getColor(),130,40);

//set new float


g.setColor(new Color(0.50f,0.75f,0.0f) );
g.fillRect(15,50,100,20);
g.drawString("CurrentRGB:"+g.getColor(),130,65);

//mnew color Object


g.setColor(Color.BLUE );
g.fillRect(15,75,100,20);
g.drawString("CurrentRGB:"+g.getColor(),130,90);

//display
Color color = Color.MAGENTA;
g.setColor(color);
g.fillRect(15,100,100,20);
g.drawString("RGBValues:"+color.getRed()
+","+color.getGreen()+","+color.getBlue(),130,115);
}
}

- Tampilan Program

Gambar 1 Tampilan ColorJPanel.java

- Analisa
Gambar di atas merupakan tampilan dari hasil compile program
ColorJPanel. Program ini tidak bisa dieksekusi dikarenakan program ini
tidak memiliki main method.
1.2 Program 6-2. ShowColors.java
- Source Code
package modul6;

import javax.swing.JFrame;
/**
*
* @author acer
*/
public class ShowColors {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
JFrame frame = new JFrame("Using Colors");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLO
SE);

ColorJPanel colorJPanel = new ColorJPanel();


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

- Tampilan Program

Gambar 2 Tampilan ShowColors.java

- Analisa
Gambar di atas merupakan tampilan dari hasil compile program
ShowColors. Program ini merupakan main method dari program 6-1,
dimana class ColorJPanel akan dipanggil dan dieksekusi.
1.3 Program 6-3. ShowColors2JFrame.java
- Source Code
package modul6;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JColorChooser;
import javax.swing.JPanel;
/**
*
* @author acer
*/
public class ShowColors2JFrame extends JFrame{
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 );
}
}

- Tampilan Program

Gambar 3 Tampilan ShowColors2JFrame.java

- Analisa
Gambar di atas merupakan tampilan dari hasil compile program
ShowColors2JFrame. Program ini tidak bisa dieksekusi dikarenakan
program ini tidak memiliki main method.
1.4 Program 6-4. ShowColors2.java
- Source Code
package modul6;

import javax.swing.JFrame;
/**
*
* @author acer
*/
public class ShowColors2 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
ShowColors2JFrame application= new
ShowColors2JFrame();

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE
);
}

- Tampilan Program

Gambar 4 Tampilan ShowColors2.java

Gambar 5 Tampilan ShowColors2.java

- Analisa
Gambar di atas merupakan tampilan dari hasil compile program
ShowColors2. Program ini merupakan main method dari program 6-3,
dimana class ShowColors2JFrame akan dipanggil dan dieksekusi. Ketika
button ditekan, maka akan muncul tampilan palette color. Frame akan
berubah warna sesuai dengan warna yang dipilih.
1.5 Program 6-5. Shapes2.java
- Source Code
package modul6;

import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author acer
*/
public class Shapes2 extends JPanel{
int xPoints[] = new int[] {300, 420, 360};
int yPoints[] = new int[] {120, 120, 20};

public Shapes2(){
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);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
JFrame frame = new JFrame("Shapes");
Shapes2 shapes = new Shapes2();
frame.setLayout(null);
frame.add(shapes);
frame.setSize(600, 180);
frame.setVisible(true);
}

- Tampilan Program

Gambar 6 Tampilan Shapes2.java

- Analisa
Gambar di atas merupakan tampilan dari hasil compile program
Shapes2. Program ini membuat suatu objek dari kelas graphic Jframe.
Pada frame ini terdapat beberapa objek berbentuk bangun datar yang
terdiri dari setengah lingkaran, lingkaran, segitiga, dan persegi.
1.6 Program 6-6. Shapes3.java
- Source Code
package modul6;

import java.awt.BasicStroke;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.geom.Arc2D;
import java.awt.geom.Line2D;
import java.awt.geom.Line2D.Double;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author acer
*/
public class Shapes3 extends JPanel{
final static float dash1[] = {10.0f};
final static BasicStroke dashed= new
BasicStroke(1.0f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MI
TER,10.0f, dash1, 0.0f);
final static BasicStroke wideStroke = new
BasicStroke(8.0f);

public Shapes3() {
setLayout(null);
setSize(600,180);
}

public void paint(Graphics g) {


Graphics2D g2 = (Graphics2D) g;
g2.draw(new Line2D.Double(20, 120, 130, 20));
g2.draw(new Rectangle2D.Double(150, 20, 130,
100));
g2.setStroke(dashed);
g2.draw(new RoundRectangle2D.Double(300, 20,
130,100, 10, 10));
g2.setStroke(wideStroke);
g2.draw(new Arc2D.Double(450, 50, 130, 50, 90,
135,Arc2D.OPEN));
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
JFrame frame = new JFrame("Shapes");
Shapes3 shapes = new Shapes3();
frame.setLayout(null);
frame.add(shapes);
frame.setSize(600,180);
frame.setVisible(true);
}

- Tampilan Program

Gambar 7 Tampilan Shapes3.java

- Analisa
Gambar di atas merupakan tampilan dari hasil compile program
Shapes3. Program ini membuat suatu objek dari kelas graphic Jframe.
Pada frame ini terdapat beberapa objek yang terbentuk dari garis, seperti
garis putus-putus, persegi yang bergaris, dan juga garis yang bentuknya
tidak beraturan.
1.7 Program 6-7. ShapesJPanel.java
- Source Code
package modul6;

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;
/**
*
* @author acer
*/
public class ShapesJPanel extends JPanel{
public void paintCompunent(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);
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_ROUN
D, 10,dashes, 0));
g2d.draw( new Line2D.Double(320,30,395,150));
}
}

- Tampilan Program

Gambar 8 Tampilan ShapesJPanel.java

- Analisa
Gambar di atas merupakan tampilan dari hasil compile program
ShapesJPanel. Program ini tidak bisa dieksekusi dikarenakan program ini
tidak memiliki main method.
1.8 Program 6-8. Shapes.java
- Source Code
package modul6;

import javax.swing.JFrame;
/**
*
* @author acer
*/
public class Shapes {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
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);
}

- Tampilan Program

Gambar 9 Tampilan Shapes.java

- Analisa
Gambar di atas merupakan tampilan dari hasil compile program
Shapes. Program ini merupakan main method dari program 6-7, dimana
class ShapesJPanel akan dipanggil dan dieksekusi.
1.9 Program 6-9. StrokeAndFill.java
- Source Code
package modul6;

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 acer
*/
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);
GridBagConstraints c = new GridBagConstraints();
c.weightx = 1.0;c.fill = GridBagConstraints.BOTH;
primLabel = new
JLabel();primLabel.setText("Primitive");
Font newFont = getFont().deriveFont(1);
primLabel.setFont(newFont);
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;
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(d
isplay);validate();
}
public void itemStateChanged(ItemEvent e){
display.renderShape();
}
/**
* @param args the command line arguments
*/
public static void main(String[] argv) {
// TODO code application logic here
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);
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);
}

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;
String instruct ="Pick a primitive, line
style, paint, andrendering 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();

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_MI
TER,10.0f, dash, 0.0f));
break;
}
Paint oldPaint = g2.getPaint();
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;
}
Shape shape=
shapes[StrokeAndFill.primitive.getSelectedIndex()];
Rectangle r = shape.getBounds();
AffineTransform saveXform =
g2.getTransform();
AffineTransform toCenterAt = new
AffineTransform();
toCenterAt.translate(w/2-(r.width/2),
h/2-(r.height/2));
g2.transform(toCenterAt);
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);}
}
}

- Tampilan Program

Gambar 10 Tampilan StrokeAndFill.java

- Analisa
Gambar di atas merupakan tampilan dari hasil compile program
StrokeAndFill. Program ini menggunakan ActionListener yang dimana
extend JApplet dan implements yang terdapat pada itemListener akan
menampilkan output berupa frame yang di dalamnya terdapat beberapa
panel, button, dan item listener. Tampilan dapat diubah sesuai dengan
keinginan.
BAB II
KESIMPULAN

Pada modul 6 ini, saya mempelajari tentang Graphics 2D pada


java. Dengan menggunakan Graphics 2D java ini, saya dapat membuat
objek berupa bangun datar, garis, mengubah warna frame ataupun tulisan,
membuat button yang dapat mengubah warna apabila diklik. Dan pada
praktikum kali ini, saya belajar mengenai action listener pada java.

You might also like