Anda di halaman 1dari 30

PRAKTIKUM : 1

JUDUL : PEWARISAN, POLIMORFISME DAN INTERFACE


WAKTU : 1X110 Menit
1. Kompetensi Dasar
a. Mahasiswa dapat mengembangkan program java dengan mengimplementasikan konsep
Pewarisan (superclass, subclass, keyword super, keyword final)
b. Mahasiswa dapat mengembangkan program java dengan mengimplementasikan konsep
Polimorfisme
c. Mahasiswa dapat mengembangkan program java dengan mengimplementasikan konsep
abstrac class, dan Interface
2. Teori Dasar
Suatu class dapat mewariskan sifat dari class yang sudah ada. Class ini dinamakan subclass dan
induk class dinamakan superclass. Kita juga akan membicarakan sifat khusus dari Java dimana kita
dapat secara otomatis memakai method yand tepat untuk setiap object tanpa memperhatikan asal
darisubclass object. Sifat ini dinamakan polimorfisme. Pada akhirnya, kita akan mendiskusikan
tentang interface yang membantu mengurangi penulisan program.
Dalam Java, semua class, termasuk class yang membangun Java API, adalah subclasses dari
superclass Object. Contoh hirarki class diperlihatkan di bawah ini.

Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass. Sementara
beberapa class di bawah class pokok dalam hirarki class dikenal sebagai subclass dari class tersebut.
Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau
method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses.
Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua
subclass. Subclass hanya butuh mengimplementasikan perbedaannya sendiri dan induknya.
Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau constant ). Interface
mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh. Interface
mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class.
Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk
mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga
menunjukkan polimorfisme, dikarenakan program dapat memanggil method interface dan versi
yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang melewati pemanggil
method interface.Sekarang, class induk Person dan subclass Student dari contoh sebelumnya, kita
tambahkan subclass lain dari Person yaitu Employee. Di bawah ini adalah hierarkinya,
Dalam Java, kita dapat membuat referensi yang merupakan tipe dari superclass ke sebuah object
dari subclass tersebut. Kemampuan dari referensi untuk mengubah sifat menurut object apa yang

dijadikan acuan dinamakan polimorfisme. Polimorfisme menyediakan multiobject dari subclasses


yang berbeda untuk diperlakukan sebagai object dari superclass tunggal, secara otomatis menunjuk
method yang tepat untuk menggunakannya ke particular object berdasar subclass yang termasuk di
dalamnya.
Contoh lain yang menunjukkan properti polimorfisme adalah ketika kita mencoba melalui
referensi ke method. Misalkan kita punya method statis printInformation yang mengakibatkan
object Person sebagai referensi, kita dapat me-referensi dari tipe Employee dan tipe Student ke
method ini selama itu masih subclass dari class Person.
Abstract class dalam java digunakan untuk mendeklarasikan karakteristik umum dari
subclass. Abstract class tidak bisa diinstansiasi sama halnya dengan kelas interface. abstract class
hanya bisa digunakan sebagai
super class, tapi juga bisa diturunkan dari class abstract lainnya.
Untuk mendeklarasikan sebuah abstract class digunakan keyword abstract,
[abstract] class [class_name]
Sebuah abstract class pada dasarnya tidak hauh beda dengan class lainnya, yakni juga berisi method
yang menggambarkan carakteristik dari kelas abstract tersebut, bedanya yakni sebuah abstract class
bisa berisi method
tanpa diimplementasikan artinya sebuah method tanpa body, methid seperti ini disebut method
abstract. untuk pendeklarasiannya digunakan
keyword abstract: [abstract] modifier class [class_name]

3. Praktikum

a. Mendefinisikan Subclass dan Superclass :


public class Person {
protected String name;
protected String address;
/**
* Default constructor
*/
public Person(){
System.out.println("Inside Person:Constructor");
name = "";
address = "";
}
/**
* Constructor dengan dua parameter
*/
public Person( String name, String address) {
this.name = name;
this.address = address;
}
/**
* Method accessor
*/
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public void setName(String name) {
this.name = name;
}
public void setAddress(String add) {
this.address = add;
}
}
public class Student extends Person{
public Student()
{
//super( "SomeName", "SomeAddress");
//super();
//super.name = "name";
System.out.println("Inside Student:Constructor");
}
public static void main( String[] args) {
Student anna = new Student();
}
}

Hasil Percobaan 1 Output Definisi Superclass dan Subclass :

b. Polimorphisme :
public class Person {
protected String name;
protected String address;
/**
* Default constructor
*/
public Person(){
System.out.println("Inside Person:Constructor");
name = "";
address = "";
}
/**
* Constructor dengan dua parameter
*/
public Person( String name, String address) {
this.name = name;
this.address = address;
}
/**
* Method accessor
*/
public String getName() {
System.out.println("Person Name : " +name);
return name;
}
public String getAddress() {
return address;
}
public void setName(String name) {
this.name = name;
}
public void setAddress(String add) {
this.address = add;
}
}
public class Student extends Person{
public Student()
{
//super( "SomeName", "SomeAddress");
//super();
//super.name = "name";
System.out.println("Inside Student:Constructor");
}
public String getName() {
System.out.println("Student Name : " +name);
return name;
}
public static void main( String[] args) {
Student anna = new Student();
}
}

public class Employee extends Person{


public String getName() {
System.out.println("Employee Name:" +name);
return name;
}
public static void main(String[] args)
{
Person ref;
Student studentObject = new Student();
Employee employeeObject = new Employee();
ref = studentObject; //Person menunjuk kepada object Student
String temp = ref.getName(); //getName dari Student class dipanggil
System.out.println(temp);
ref = employeeObject; //Person menunjuk kepada object Employee
temp = ref.getName(); //getName dari Employee class dipanggil
System.out.println(temp);
}
}

Hasil Percobaan 2 Polimorphisme :

c. Menampilkan Abstract Class:


abstract class Shape {

public String color;


//constractor default, constraktor yang tidak memiliki argumen dan isi
public Shape() {
}
//sama halnya dengan kelas biasa abstract class juga bisa berisi method
//seperti yang ada pada kelas biasa
public void setColor(String c) {
color = c;
}
public String getColor() {
return color;
}
//sebuah abstract method yang tidak memiliki body
//method ini akan diinisialisasi nantinya pada subclass yang mewarisi
kelass abstract Shape ini
//semua abstract method yang ada pada class abstract harus
diimplementasikan
//semua oleh subclass
abstract public double area();
}

//keyword extends adalah keyword yang digunakan oleh subclass


//ketika melakukan pewarisan terhada super class

public class Point extends Shape {

static int x, y;
public Point() {
x = 0;
y = 0;
}
public double area() {
return 0;
}
public double perimeter() {
return 0;
}
public static void print() {
System.out.println("point: " + x + "," + y);
}
public static void main(String args[]) {
Point p = new Point();
p.print();
}
}

Output

point: 0, 0
PRAKTIKUM : 2
JUDUL : AWT DAN SWING
WAKTU : 1 X 120 Menit

1. Kompetensi Dasar
a. Memahami persamaan dan perbedaan antara AWT dan Swing
b. Perbedaan antara komponen dan kontainer.
c. Mendesain aplikasi GUI menggunakan AWT.
d. Mendesain aplikasi GUI menggunakan Swing.
e. Menjelaskan tentang flow layout, border layout, dan grid layout dalam komponen GUI
f. Membuat tampilan yang komplek dalam mendesain aplikasi GUI.

2. Teori Dasar
Tanpa mempelajari tentang grapichal user interface (GUI) API, Anda masih tetap bisa membuat
suatu program. Tetapi, program Anda akan kelihatan tidak menarik dan tidak nyaman digunakan
bagi para user. Memiliki GUI yang baik dapat memberi efek pada penggunaan aplikasi. Java
menyediakan banyak tool seperti Abstract Windowing Toolkit dan Swing untuk mengembangkan
aplikasi GUI yang interaktif.
The Java Foundation Class (JFC), merupakan bagian penting dari Java SDK, yang termasuk dalam
koleksi dari API dimana dapat mempermudah pengembangan aplikasi JAVA GUI. JFC termasuk
diantara 5 bagian utama dari API yaitu AWT dan Swing. Tiga bagian yang lainnya dari API adalah
Java2D, Accessibility, dan Drag and Drop. Semua itu membantu developer dalam mendesain dan
mengimplementasikan aplikasi dengan visualisasi yang lebih baik.
AWT dan Swing menyediakan komponen GUI yang dapat digunakan dalam membuat aplikasi Java
dan applet. Anda akan mempelajari applet pada bab berikutnya. Tidak seperti beberapa komponen
AWT yang menggunakan native code, keseluruhan Swing ditulis menggunakan bahasa
pemrograman Java. Swing menyediakan implementasi platform-independent dimana aplikasi yang
dikembangkan dengan platform yang berbeda dapat memiliki tampilan yang sama. Begitu juga
dengan AWT menjamin tampilan look and feel pada aplikasi yang dijalankan pada dua mesin yang
berbeda menjadi terlihat sama. Swing API dibangun dari beberapa API yang mengimplementasikan
beberapa jenis bagian dari AWT. Kesimpulannya, komponen AWT dapat digunakan bersama
dengan komponen Swing.

3. Praktikum
a.
import java.awt.Frame;
public class SampleFrame extends Frame{
public SampleFrame() {
}
public static void main(String args[]) {
SampleFrame sf = new SampleFrame();
sf.setSize(300, 300); //Coba hilangkan baris ini
sf.setVisible(true); //Coba hilangkan baris ini
}

Menampilkan Frame
Hasil Percobaan 1 Output Frame :
b. Menampilkan Panel :
import java.awt.Frame;
public class GraphicPanel extends Panel {
public GraphicPanel() {
setBackground(Color.black);
}
public void paint(Graphics g) {
g.setColor(new Color(0,255,0)); //green
g.setFont(new Font("Helvetica",Font.PLAIN,16));
g.drawString("Hello GUI World!", 30, 100);
g.setColor(new Color(1.0f,0,0)); //red
g.fillRect(30, 100, 150, 10);
}
public static void main(String args[]) {
Frame f = new Frame("Testing Graphics Panel");
GraphicPanel gp = new GraphicPanel();
f.add(gp);
f.setSize(600, 300);
f.setVisible(true);
}
}

Hasil Percobaan 2 Output Panel :

c. Menampilkan Frame Control :


import java.awt.*;
public class FrameWControls extends Frame{
public FrameWControls() {
}
public static void main(String args[]) {
FrameWControls fwc = new FrameWControls();
fwc.setLayout(new FlowLayout()); //more on this later
fwc.setSize(600, 600);
fwc.add(new Button("Test Me!"));
fwc.add(new Label("Labe"));
fwc.add(new TextField());
CheckboxGroup cbg = new CheckboxGroup();
fwc.add(new Checkbox("chk1", cbg, true));
fwc.add(new Checkbox("chk2", cbg, false));
fwc.add(new Checkbox("chk3", cbg, false));
List list = new List(3, false);
list.add("MTV");
list.add("V");
fwc.add(list);
Choice chooser = new Choice();
chooser.add("Avril");
chooser.add("Monica");
chooser.add("Britney");
fwc.add(chooser);
fwc.add(new Scrollbar());
fwc.setVisible(true);
}
}

Hasil Percobaan 3 Output Frame Control :


d. Menampilkan Flow Layout Demo:
import java.awt.*;
public class FlowLayoutDemo extends Frame{
public FlowLayoutDemo() {
}
public static void main(String args[]) {
FlowLayoutDemo fld = new FlowLayoutDemo();
fld.setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10));
fld.add(new Button("ONE"));
fld.add(new Button("TWO"));
fld.add(new Button("THREE"));
fld.setSize(100, 100);
fld.setVisible(true);
}
}

Hasil percobaan 4 Output Flow Layout Demo :

e. Menampilkan Border Layout Demo:

import java.awt.*;
public class BorderLayoutDemo extends Frame{
public BorderLayoutDemo() {
}
public static void main(String args[]) {
BorderLayoutDemo bld = new BorderLayoutDemo();
bld.setLayout(new BorderLayout(10, 10)); //may remove
bld.add(new Button("NORTH"), BorderLayout.NORTH);
bld.add(new Button("SOUTH"), BorderLayout.SOUTH);
bld.add(new Button("EAST"), BorderLayout.EAST);
bld.add(new Button("WEST"), BorderLayout.WEST);
bld.add(new Button("CENTER"), BorderLayout.CENTER);
bld.setSize(200, 200);
bld.setVisible(true);
}
}

Hasil Percobaan 5 Output Border Layout Demo :


f. Menampilkan Grid Layout Demo:
import java.awt.*;
public class GridLayoutDemo extends Frame {
public GridLayoutDemo() {
}
public static void main(String args[]) {
GridLayoutDemo gld = new GridLayoutDemo();
gld.setLayout(new GridLayout(2, 3, 4, 4));
gld.add(new Button("ONE"));
gld.add(new Button("TWO"));
gld.add(new Button("THREE"));
gld.add(new Button("FOUR"));
gld.add(new Button("FIVE"));
gld.setSize(200, 200);
gld.setVisible(true);
}
}

Hasil Percobaan 6 output Grid Layout Demo :

g. Menampilkan Complex Layout:


import java.awt.*;
public class ComplexLayout extends Frame{
public ComplexLayout() {
}
public static void main(String args[]) {
ComplexLayout cl = new ComplexLayout();
Panel panelNorth = new Panel();
Panel panelCenter = new Panel();
Panel panelSouth = new Panel();
panelNorth.add(new Button("ONE"));
panelNorth.add(new Button("TWO"));
panelNorth.add(new Button("THREE"));
panelCenter.setLayout(new GridLayout(4,4));
panelCenter.add(new TextField("1st"));
panelCenter.add(new TextField("2nd"));
panelCenter.add(new TextField("3rd"));
panelCenter.add(new TextField("4th"));
panelSouth.setLayout(new BorderLayout());
panelSouth.add(new Checkbox("Choose me!"),
BorderLayout.CENTER);
panelSouth.add(new Checkbox("I'm here!"),
BorderLayout.EAST);
panelSouth.add(new Checkbox("Pick me!"),
BorderLayout.WEST);
cl.add(panelNorth, BorderLayout.NORTH);
cl.add(panelCenter, BorderLayout.CENTER);
cl.add(panelSouth, BorderLayout.SOUTH);
cl.setSize(300,300);
cl.setVisible(true);
}
}
Hasil Percobaan 7 Output Complex Layout :

h. Menampilkan Swing Demo:

import java.awt.*;
import javax.swing.*;
public class SwingDemo {
JFrame frame;
JPanel panel;
JTextField textField;
JButton button;
Container contentPane;
public SwingDemo() {
}
void launchFrame() {
frame = new JFrame("My First Swing Application");
panel = new JPanel();
textField = new JTextField("Default text");
button = new JButton("Click me!");
contentPane = frame.getContentPane();
panel.add(textField);
panel.add(button);
contentPane.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
SwingDemo sd = new SwingDemo();
sd.launchFrame();
}
}

Hasil percobaan 8 Output Swing :


i. Menampilkan JOption Demo:

import javax.swing.*;
import java.awt.*;
public class JOptionPaneDemo {
JOptionPane optionPane;
public JOptionPaneDemo() {
}
void launchFrame() {
optionPane = new JOptionPane();
String name = optionPane.showInputDialog("Hi, what's yourname?");
optionPane.showMessageDialog(null,"Nice to meet you, " + name + ".",
"Greeting...",optionPane.PLAIN_MESSAGE);
System.exit(0);
}
public static void main(String args[]) {
new JOptionPaneDemo().launchFrame();
}
}

Hasil Percobaan 9 Output JOptionPaneDemo :


PRAKTIKUM : 3
JUDUL : GUI EVENT HANDLING
WAKTU : 1 X 120 Menit
1. Kompetensi Dasar
a. Menerangkan komponen-komponen delegation event model
b. Mengerti bagaimana delegation event model bekerja
c. Menciptakan aplikasi GUI yang berinteraksi dengan user
d. Mendiskusikan manfaat dari class-class adapter
e. Mendiskusikan keuntungan-keuntungan dari menggunakan inner dan anonymous class
2. Teori Dasar
Pada modul ini, Anda akan belajar bagaimana mengendalikan events triggered ketika user
berinteraksi dengan aplikasi GUI Anda. Setelah menyelesaikan modul ini, Anda akan dapat
mengembangkan aplikasi GUI yang dapat merespon interaksi user.
Delegasi event model menguraikan bagaimana program Anda dapat merespon interaksi dari user.
Untuk memahami model, mari kita pelajari pertama-tama melalui tiga komponen utamanya.
a. Event Source
The event source mengacu pada komponen GUI yang meng-generate event. Sebagai contoh, jika
user menekan tombol, event source dalam hal ini adalah tombol.
b. Event Listener/Handler
The event listener menerima berita dari event-event dan proses-proses interaksi user. Ketika
tombol ditekan, listener akan mengendalikan dengan menampilkan sebuah informasi yang
berguna untuk user.
c. Event Object
Ketika sebuah event terjadi (misal, ketika user berinteraksi dengan komponen GUI), sebuah
object event diciptakan. Object berisi semua informasi yang perlu tentang event yang telah
terjadi. Informasi meliputi tipe dari event yang telah terjadi, seperti ketika mouse telah di-klik.
Ada beberapa class event untuk kategori yang berbeda dari user action. Sebuah event object
mempunyai tipe data mengenai salah satu class ini.
a. PraktikumMouse Event Demo :

import java.awt.*;
import java.awt.event.*;
public class MouseEventsDemo extends Frame implements
MouseListener, MouseMotionListener {
TextField tf;
public MouseEventsDemo(String title){
super(title);
tf = new TextField(60);
addMouseListener(this);
}
public void launchFrame() {
/* Menambah komponen pada frame */
add(tf, BorderLayout.SOUTH);
setSize(300,300);
setVisible(true);
}
public void mouseClicked(MouseEvent me) {
String msg = "Mouse clicked.";
tf.setText(msg);
}
public void mouseEntered(MouseEvent me) {
String msg = "Mouse entered component.";
tf.setText(msg);
}
public void mouseExited(MouseEvent me) {
String msg = "Mouse exited component.";
tf.setText(msg);
}
public void mousePressed(MouseEvent me) {
String msg = "Mouse pressed.";
tf.setText(msg);
}
public void mouseReleased(MouseEvent me) {
String msg = "Mouse released.";
tf.setText(msg);
}
public void mouseDragged(MouseEvent me) {
String msg = "Mouse dragged at " + me.getX() + "," + me.getY();
tf.setText(msg);
}
public void mouseMoved(MouseEvent me) {
String msg = "Mouse moved at " + me.getX() + "," +
me.getY();
tf.setText(msg);
}
public static void main(String args[]) {
MouseEventsDemo med = new MouseEventsDemo("Mouse Events
Demo");
med.launchFrame();
}
}

Hasil Percobaan 1 Output MouseEvent Demo :


b. Close Frame :
import java.awt.*;
import java.awt.event.*;
class CloseFrame extends Frame implements WindowListener {
Label label;
CloseFrame(String title) {
super(title);
label = new Label("Close the frame.");
this.addWindowListener(this);
}
void launchFrame() {
setSize(300,300);
setVisible(true);
}
public void windowActivated(WindowEvent e) {
}
public void windowClosed(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowOpened(WindowEvent e) {
}
public static void main(String args[]) {
CloseFrame cf = new CloseFrame("Close Window Example");
cf.launchFrame();
}
}

Hasil Percobaan 2 Output CloseFrame :

c. Close Frame dengan Command Listener tertentu :


import java.awt.*;
import java.awt.event.*;
class CloseFrame extends Frame{
Label label;
CFListener w = new CFListener(this);
CloseFrame(String title) {
super(title);
label = new Label("Close the frame.");
this.addWindowListener(w);
}
void launchFrame() {
setSize(300,300);
setVisible(true);
}

public static void main(String args[]) {


CloseFrame cf = new CloseFrame("Close Window Example");
cf.launchFrame();
}
}
class CFListener extends WindowAdapter{
CloseFrame ref;
CFListener( CloseFrame ref ){
this.ref = ref;
}
public void windowClosing(WindowEvent e) {
ref.dispose();
System.exit(1);
}
}

Hasil percobaan 3 Output Close Frame dengan membuat Methode Listener sendiri:

d. Close Frame dengan Inner Class:


import java.awt.*;
import java.awt.event.*;
class CloseFrame extends Frame{
Label label;
CloseFrame(String title) {
super(title);
label = new Label("Close the frame.");
this.addWindowListener(new CFListener());
}
void launchFrame() {
setSize(300,300);
setVisible(true);
}
class CFListener extends WindowAdapter {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(1);
}
}
public static void main(String args[]) {
CloseFrame cf = new CloseFrame("Close Window
Example");
cf.launchFrame();
}
}

Hasil percobaan 4 Output Close Frame dengan inner class:

e. Anonymous Inner class:


import java.awt.*;
import java.awt.event.*;
class CloseFrame extends Frame{
Label label;
CloseFrame(String title) {
super(title);
label = new Label("Close the frame.");
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
dispose();
System.exit(1);
}
});
}
void launchFrame() {
setSize(300,300);
setVisible(true);
}
public static void main(String args[]) {
CloseFrame cf = new CloseFrame("Close Window Example");
cf.launchFrame();
}
}

Hasil percobaan 5 Output Close Frame dengan anonymous inner class:

PRAKTIKUM : 4
JUDUL : SPLASH SCREEN APLIKASI
WAKTU : 1 X 120 Menit

1. Kompetensi Dasar
a. Mahasiswa dapat mengembangkan sebuah Splash Screen untuk sebuah aplikasi dengan
menggunakan komponen-komponen Swing
2. Teori Dasar
a. Jwindow berfungsi untuk membuat window yang akan menjadi latar belakang logo,
Komponen ini terdapat dalam package javax.swing. sehingga package tersebut harus
dikenalkan ke dalam program
b. Jlabel berfungsi untuk membuat label yang berguna untuk menampilkan teks
c. JprogressBar berfungsi untuk membuat baris progress yang dapat digunakan untuk
menunjukan progress dari sebuah loading, pada penerapannya biasanya digunakan
komponen Timer.
d. Dimension berfungsi untuk mengambil ukuran layar monitor, baik panjang maupun
lebarnya.komponen tersebut juga terdapat pada package javax.swing
3. Praktikum
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
//deklarasi class

public class SIP extends JWindow {


private Dimension dimensi=Toolkit.getDefaultToolkit().getScreenSize();
private JLabel lblLogo=new JLabel(new ImageIcon("Gambar/sip.jpg"));
private JProgressBar barisProgres = new JProgressBar();
private int time=0;
private Timer timer;
//deklarasi konstruktor
public SIP () {
//menyiapkan variabel warna
Color Warna = Color.blue;
//mengatur baris progress
barisProgres.setValue(0);
barisProgres.setPreferredSize(new Dimension(100,15));
barisProgres.setBackground(Color.white);
barisProgres.setForeground(Color.red);
barisProgres.setStringPainted(true);
//mengatur warna garis pinggir
barisProgres.setBorder(new LineBorder(Warna,1));
lblLogo.setBorder(new LineBorder(Warna,1));
//meletakkan objek ke kontainer
getContentPane().add(lblLogo,BorderLayout.NORTH);
getContentPane().add(barisProgres,BorderLayout.CENTER);
//mengatur lama window logo tampil pada layar monitor
timer = new Timer(50,new ActionListener(){
public void actionPerformed(ActionEvent evt){
time++;
barisProgres.setValue(time);
if(barisProgres.getPercentComplete()==1.0){
timer.stop();
setVisible(false);
//menjalankan menu utama
// new Menu_Utama();
}
}
});

timer.start();
//menempatkan objek ke memori sebelum ditampilkan
pack();
//mengatur lokasi window tepat di tengah layar monitor
setLocation(dimensi.width/2-getWidth()/2,dimensi.height/2-getHeight()/2);
//menempaktkan window ke layar monitor\
show();
}
//deklarasi metode utama
public static void main(String args[]){
new SIP();
}
}

Keluaran dari program di atas :


PRAKTIKUM : 5
JUDUL : CLASS KONEKSI
WAKTU : 1 X 120 Menit

1. Kompetensi Dasar
Mahasiswa dapat menghubungkan sebuah database (MySql) dengan interface java

2. Teori Dasar
Membuat program yang terhubung dengan database diperlukan sebuah class koneksi, class
tersebut berisi driver dan url dimana database berada di media penyimpanan, format driver
disesuaikan dengan jenis RDBMS yang dipakai, untuk database tertentu paket java sudah
menyediakan salahsatu nya adalah MySql, berikut contoh format umum penggunaan driver :

Class.forName(nama_driver);

Contoh driver MySQL


Class.forName("com.mysql.jdbc.Driver");

Sedangkan format URL, adalah lokasi dimana database disimpan, format penulisannya sebagai
berikut :
DriverManager.getConnetion(url,user,password);

Contoh penggunaan:
DriverManager.getConnection("jdbc:mysql://localhost/pelajar","root","password");

3. Praktikum

import java.sql.*;
public class koneksi {
public koneksi(){
}
public Connection bukaKoneksi()throws SQLException{
Connection con=null;
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/pelajar",
"root", "password");
return con;
}
catch(SQLException se){
System.out.println("No Connection open");
return null;
}
catch(Exception ex){
System.out.println("Cound not open connection");
return null;
}
}
}
PRAKTIKUM : 6
JUDUL : ANTARMUKA
WAKTU : 1 X 120 Menit

1. Kompetensi Dasar
Mahasiswa dapat membuat antar muka aplikasi menggunakan komponen swing
Mahasiswa dapat mengatur letak masing masing komponen swing terhadap Container

2. Teori Dasar
a. GUI (Graphical User Interface), memungkinkan user untuk berinteraksi dengan komputer
secara lebih baik.
b. Pengguna berinteraksi dengan berbagai elemen grafis,diantaranya: button, dialog box, menu,
dsb.
c. Sejak 1994 Sun Microsystem berupaya untuk membuat JAVA memiliki perangkat bergaya
desktop dengan ToolkitJAVA yang dikenal sebagai AWT (Abstract Windowing Toolkit)
d. Tahun 1997, muncul JFC (Java Foundation Class) untuk kepentingan pembuatan aplikasi
Window yang merupakan pengembangan dari AWT.
e. JFC mempunyai kode swing yang terdapat pada package yang disediakan pada JAVA SDK
versi 1.2 ke atas (JAVA 2)
f. JAVA menyediakan dua graphical library.

AWT (Abstract Windows Toolkit)


Swing
Contoh: import java.awt.* ;
Import java.awt.event.* ;
Import javax.swing.* ;

Graphical Object
a. Container (tempat), obyek yang dapat menampung komponen grafis dan tempat yang lebih
kecil
Contoh: frames, panels
b. Component, obyek grafis yang berfungsi untuk menampilkan data, menerima masukan,
atau menunjukkan suatu kondisi.
Contoh: buttons, labels, text fields
c. Event, obyek yang merepresentasikan suatu kejadian.
Contoh: gerakan mouse, penekanan tombol
d. Listener, suatu obyek yang menunggu suatu kejadian khusus dan akan bereaksi (melakukan
sesuatu) jika kejadian tersebut terjadi
3. Praktikum

import javax.swing.*;
import java.awt.event.*;
public class Siswa extends JFrame implements ActionListener {
private JPanel jpSiswa = new JPanel();
private JLabel lblNis = new JLabel("Nis:"),lblNama = new JLabel("Nama:"),
lblPassword = new JLabel("Password:"),lblAlamat = new JLabel("Alamat:"),
lblEmail = new JLabel("Email:"),lblJenisKelamin = new
JLabel("JenisKelamin:");
private JTextField txtNis = new JTextField(),txtNama = new
JTextField(),txtPassword
= new JTextField(),txtAlamat = new JTextField(),txtEmail = new
JTextField();
private JComboBox cboJenisKelamin = new JComboBox();
private JButton btnTambah = new JButton("Tambah"),btnUbah = new JButton("Ubah"),
btnHapus = new JButton("Hapus"),btnBersih = new JButton("Bersih");

Siswa (){
super("Entri Data MHS");
setSize(500,300);
jpSiswa.setLayout(null);

//mengatur letak objek pada container


lblNis.setBounds(15, 20, 100, 25);
lblNama.setBounds(15, 55, 100, 25);
lblPassword.setBounds(15, 90, 100, 25);
lblAlamat.setBounds(15, 125, 100, 25);
lblEmail.setBounds(15, 160, 100, 25);
lblJenisKelamin.setBounds(15, 195, 100, 25);

txtNis.setBounds(115, 20, 100, 25);


txtNama.setBounds(115, 55, 100, 25);
txtPassword.setBounds(115, 90, 100, 25);
txtAlamat.setBounds(115, 125, 150, 25);
txtEmail.setBounds(115, 160, 100, 25);
cboJenisKelamin.setBounds(115, 195, 50, 25);

btnTambah.setBounds(340, 20, 85, 25);


btnUbah.setBounds(340, 55, 85, 25);
btnHapus.setBounds(340, 90, 85, 25);
btnBersih.setBounds(340, 125, 85, 25);

//mengatur/meletakkan objek pada objek panel


jpSiswa.add(lblNis);
jpSiswa.add(lblNama);
jpSiswa.add(lblPassword);
jpSiswa.add(lblAlamat);
jpSiswa.add(lblEmail);
jpSiswa.add(lblJenisKelamin);
jpSiswa.add(txtNis);
jpSiswa.add(txtNama);
jpSiswa.add(txtPassword);
jpSiswa.add(txtAlamat);
jpSiswa.add(txtEmail);
jpSiswa.add(cboJenisKelamin);

jpSiswa.add(btnTambah);
jpSiswa.add(btnUbah);
jpSiswa.add(btnHapus);
jpSiswa.add(btnBersih);

//mengisi combo Jenis kelamin


cboJenisKelamin.addItem("L");
cboJenisKelamin.addItem("P");

//mengatur objek agar dapat berinteraksi dengan user


btnTambah.addActionListener(this);
btnUbah.addActionListener(this);
btnHapus.addActionListener(this);
btnBersih.addActionListener(this);

//menambahkan objek JPanel pada container frame


getContentPane().add(jpSiswa);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();
if (obj ==btnTambah){
Tambah();
}
if (obj == btnUbah){
Ubah();
}
if (obj == btnHapus){
Hapus();
}
Bersih();
}
void Bersih(){
}
void Tambah(){
}
void Ubah(){
}
void Hapus(){
}
public static void main (String[] args){
new Siswa();
}
}

Keluaran dari program tersebut :


PRAKTIKUM : 7
JUDUL : MANIPULASI DATA PADA DATABASE MELALUI ANTARMUKA
JAVA
WAKTU : 1 X 120 Menit

1. Kompetensi Dasar
Mahasiswa dapat menghubungkan aplikasi java dengan database mysql
Mahasiswa dapat membuat program untuk menambahkan data pada database MySQl melalui
aplikasi java
Mahasiswa dapat membuat program untuk menghapus data pada database MySQl melalui
aplikasi java
Mahasiswa dapat membuat program untuk memperbaharui data pada database MySQl melalui
aplikasi java

2. Teori Dasar

3. Praktikum
Gunakan program java yang telah dibuat sebelumnya (class Siswa) tambahkan code seperti
dibawah ini sehingga menghasilkan keluaran yang semestinya
import java.sql.*;
. . . .
. . . .

void Bersih(){
txtNis.setText("");
txtNama.setText("");
txtPassword.setText("");
txtAlamat.setText("");
txtEmail.setText("");
cboJenisKelamin.setSelectedIndex(0);
}
void Tambah(){
try{
Koneksi ObjKoneksi = new Koneksi();
Connection con = ObjKoneksi.bukaKoneksi();
Statement st = con.createStatement();
String sql = "insert into siswa(nis,nama,password,alamat,email," +
"jeniskelamin) values ('"+txtNis.getText()
+"','"+txtNama.getText()
+"','"+txtPassword.getText()+"','"+txtAlamat.getText()+"'," +
"'"+txtEmail.getText()
+"','"+cboJenisKelamin.getSelectedItem()+"')";
int row = st.executeUpdate(sql);

if (row ==1){
JOptionPane.showMessageDialog(null,"Data sudah ditambahkan ke" +
" database","infomasi",JOptionPane.INFORMATION_MESSAGE);

con.close();
}
}
catch(SQLException e){
JOptionPane.showMessageDialog(null,"Data tidak ditambahkan ke" +
" database","infomasi",JOptionPane.INFORMATION_MESSAGE);
}
}
void Ubah(){
try{
Koneksi ObjKoneksi = new Koneksi();
Connection con = ObjKoneksi.bukaKoneksi();
Statement st = con.createStatement();

String sql = "update siswa set nama ='"+txtNama.getText()+"'," +


"password ='"+txtPassword.getText()+"',alamat =
'"+txtAlamat.getText()
+"',email='"+txtEmail.getText()+"',jeniskelamin =
'"+cboJenisKelamin.getSelectedItem()+
"' where nis = '"+txtNis.getText()+"' ";

int row = st.executeUpdate(sql);


if (row ==1){
JOptionPane.showMessageDialog(null,"Data sudah di update "
,"infomasi",JOptionPane.INFORMATION_MESSAGE);
con.close();
}
}
catch(SQLException e){
JOptionPane.showMessageDialog(null,"Data tidak
diUbah","infomasi",JOptionPane.
INFORMATION_MESSAGE);
}
}
void Hapus(){
try{
Koneksi ObjKoneksi = new Koneksi();
Connection con = ObjKoneksi.bukaKoneksi();
Statement st = con.createStatement();
String sql = "delete from siswa where nis = '"+txtNis.getText()+"' ";
int row = st.executeUpdate(sql);
if (row ==1){
JOptionPane.showMessageDialog(null,"Data sudah dihapus dari " +
" database","infomasi",JOptionPane.INFORMATION_MESSAGE);

con.close();

}
}
catch(SQLException e){
JOptionPane.showMessageDialog(null,"Data tidak
dihapus","infomasi",JOptionPane.
INFORMATION_MESSAGE);
}

PRAKTIKUM : 9
JUDUL : MENAMPILKAN DATA PADA OBJEK JTABLE
WAKTU : 1 X 120 Menit

1. Kompetensi dasar
Masahasiswa dapat menggunakan komponen JTable untuk menampilkan data dari database

2. Teori Dasar
Salah satu komponen Swing yang paling sering kita gunakan dalm membuat sebuah aplikasi
(terutama aplikasi database), adalah JTable milik Swing.
Komponen yang sangat penting ini, memiliki kemampuan yang luas. baik dari segi
tampilan/interface ataupun dari segi data yang ada didalammnya.
Jtable hanya berfungsi sebagai Viewer data. artinya data yang sebenarnya tidak disimpan didalam
JTable melainkan dalam TableModel. jadi salah klo mengira data yang kita inputkan kedalam
JTable disimpan di Jtable.
dengan begitu untuk merubah, menambah, mengambil nilai yang ada di dalam JTable yang
diperlukan adalah mengubah TableModel nya saja.

3. Praktikum

import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;
/**
*
* @author root
*/
public class ResultSetTableModel extends AbstractTableModel{
private ResultSet rs;
public ResultSetTableModel(ResultSet rs) {
this.rs = rs;
}
public int getColumnCount() {
try {
if(rs == null)
return 0;
else
return rs.getMetaData().getColumnCount();
}catch(SQLException e) {
System.out.println("resultset generating error while getting column
count");
System.out.println(e.getMessage());
return 0;
}
}
public int getRowCount() {
try {
if(rs == null)
return 0;
else {
rs.last();
return rs.getRow();
}
}catch(SQLException e) {
System.out.println("resultset generating error while getting rows
count");
System.out.println(e.getMessage());
return 0;
}
}
public Object getValueAt(int rowIndex, int columnIndex) {
if(rowIndex<0 || rowIndex > getRowCount() ||
columnIndex < 0 || columnIndex > getColumnCount())
return null;
try {
if(rs == null)
return null;
else {
rs.absolute(rowIndex+1);
return rs.getObject(columnIndex+1);
}
}catch(SQLException e) {
System.out.println("resultset generating error while fetching rows");
System.out.println(e.getMessage());
return null;
}
}
@Override
public String getColumnName(int columnIndex) {
try {
return rs.getMetaData().getColumnName(columnIndex+1);
}catch (SQLException e) {
System.out.println("resultset generating error while fetching column
name");
System.out.println(e.getMessage());
}
return super.getColumnName(columnIndex);
}
}
Class digunakan untuk mendukung class siswa, tambahkan code berikut pada class siswa
public class Siswa extends JFrame implements ActionListener {
private JPanel jpSiswa = new JPanel();
. . . .
. . . .

String[] strJdl={"No","Nis","Nama","Password","Alamat","Email","Jenis Kelamin"};

//Deklarasi untuk Tabel

JTable tabel = new JTable();


JScrollPane skrTabel = new JScrollPane();

Siswa (){

//pengaturan Tabel

skrTabel.getViewport().add(tabel);
tabel.setEnabled(true);
skrTabel.setBounds(15, 250, 470, 115);

//menambahkan tabel pada panel


jpSiswa.add(skrTabel);

//menambahkan objek JPanel pada container frame


getContentPane().add(jpSiswa);
//menampilkan tabel siswa ke komponen tabel
TampilTabel();

}
void Tambah(){
. . . .
. . . .

}
catch(SQLException e){
JOptionPane.showMessageDialog(null,"Data tidak ditambahkan ke" +
" database","infomasi",JOptionPane.INFORMATION_MESSAGE);
}
TampilTabel();
}
void Ubah(){
. . . .
. . . .
catch(SQLException e){
JOptionPane.showMessageDialog(null,"Data tidak
diUbah","infomasi",JOptionPane.
INFORMATION_MESSAGE);
}
TampilTabel();
}
void Hapus(){
. . . .
. . . .
catch(SQLException e){
JOptionPane.showMessageDialog(null,"Data tidak
dihapus","infomasi",JOptionPane.
INFORMATION_MESSAGE);
}
TampilTabel();
}
void TampilTabel(){
try {
Koneksi ObjKoneksi = new Koneksi();
Connection con = ObjKoneksi.bukaKoneksi();
Statement st = con.createStatement();
String sql = "SELECT * FROM siswa";
ResultSet set = st.executeQuery(sql);
//menampilkan data ke Tabel
ResultSetTableModel model = new ResultSetTableModel(set);
tabel.setModel(model);

while(set.next()){
txtNis.setText(Integer.toString(set.getInt("nis")));
txtNama.setText(set.getString("nama"));
txtPassword.setText(set.getString("password"));
txtAlamat.setText(set.getString("alamat"));
txtEmail.setText(set.getString("email"));
cboJenisKelamin.addItem(set.getString("jeniskelamin"));
}
}
catch(SQLException e) {
System.out.println("gagal query");
}
}

Keluaran dari program tersebut adalah :

Anda mungkin juga menyukai