22 April 2020
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
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
A. Program 6-2 ShowColors.java
Source code
import javax.swing.JFrame;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ColorJPanel colorJPanel = new ColorJPanel();
frame.add(colorJPanel);
frame.setSize(400,180);
frame.setVisible(true);
}
}
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.
3
import javax.swing.JPanel;
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);
}
}
}
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
4
Source code
import javax.swing.JFrame;
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLO
SE);
}
}
Analisis
Program ShowColors2 memanggil class ShowColors2JFrame sehinga dapat
menampilkan hasil seperti pada gambar diatas , yaitu membuat background bisa diubah
warnanya sesuai yang diinginkan.
5
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
frame.setLayout(null);
frame.add(shapess);
frame.setSize(600, 180);
frame.setVisible(true);
}
Analisis
Program shapess menampilkan suatu fillrect yang terdiri dari beberapa angka yang
menampilkan beberapa gambar seperti pada gambar di atas.
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));
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Shape2D shape2d = new Shape2D();
frame.add(shape2d);
frame.setSize(500, 300);
frame.setVisible(true);
}
}
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.
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));
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
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ShapesJPanel ShapesJPanel = new ShapesJPanel();
frame.add( ShapesJPanel);
frame.setSize(425, 200);
frame.setVisible(true);
}
9
}
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;
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);
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);
validate();
}
frame.getContentPane().add(BorderLayout.CENTER,applet);
applet.init();
frame.setSize(450,250);
frame.show();
}
}
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);
}
Stroke oldStroke=g2.getStroke();
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;
}
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 PopupFrame()
{
super( "Using JPopupMenus" );
setBackground( Color.WHITE );
addMouseListener(
new MouseAdapter()
{
public void mousePressed( MouseEvent event )
{
checkForTriggerEvent( event );
}
16
public void mouseReleased( MouseEvent event )
{
checkForTriggerEvent( event );
}
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.
int xPoints[] = { 55, 67, 109, 73, 83, 55, 27, 37, 1, 43
};
int yPoints[] = { 0, 36, 36, 54, 96, 72, 96, 54, 36, 36
};
18
star.closePath(); // close the shape
import java.awt.Color;
import javax.swing.JFrame;
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