15 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 5-1 .................................................................................................................................. 2
2.2 Program 5-2 .................................................................................................................................. 3
2.3 Program 5-3 .................................................................................................................................. 6
2.4 Program 5-4 .................................................................................................................................. 7
2.5 Program 5-5 .................................................................................................................................. 9
2.6 Program 5-6 ................................................................................................................................ 11
2.7 Program 5-7 ................................................................................................................................ 12
2.8 Program 5-8 ................................................................................................................................ 16
BAB 3 ......................................................................................................................................................... 20
TUGAS AKHIR ........................................................................................................................................ 20
3.1 Program TicTacToe .................................................................................................................... 20
DAFTAR PUSTAKA .................................................................................................................................. ii
i
BAB I
PEMBAHASAN
Event Handling
Pengguna berinteraksi dengan aplikasi GUI untuk menunjukkan tugas-tugas (tasks) yang
dilakukan aplikasi. Misalnya, ketika Anda menulis e-mail dalam aplikasi e-mail, mengklik tombol
Kirim memberitahu aplikasi untuk mengirim e-mail ke alamat e-mail yang ditentukan. GUI adalah
sesuatu yang bersifat event driven (mendorong adanya sebuah event). Ketika pengguna
berinteraksi dengan komponen GUI, interaksi yang dikenal sebagai events mendorong program
untuk melakukan tugas. Beberapa event yang umum (interaksi pengguna) yang mungkin
menyebabkan aplikasi untuk melakukan tugas termasuk mengklik tombol, mengetik di bidang
teks, memilih item dari menu, menutup jendela dan menggerakkan mouse. Kode yang melakukan
tugas sebagai tanggapan terhadap suatu kejadian disebut event handler. Keseluruhan proses
merespons event dikenal sebagai event handling
Dilegation Event Model
Model ini digunakan oleh java untuk menangani interaksi user dengan komponen komponen GUI.
Menjelaskan bagaimana program anda dapat merespon suatu interaksi user.
Terdapat 3 komponen penting
1. Event source
2. Event Listener/Handler
3. Event Object
1
BAB 2
/**
*
* @author Yessi Sofia
*/
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public SwingApplication() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(2,1));
pack();
setVisible(true);
}
2
@Override
public void actionPerformed(ActionEvent e) {
numClick++;
lb1.setText(String.valueOf(numClick));
}
Analisis
Program SwingApllication ini merupakan contoh dari penggunaan ActionListener.
Untuk menggunakan ActionListener haruslah di registrasi terlebih dahulu seperti code
button. “ button.addActionListener(this);” Lalu membuat method untuk handles nya “
public void actionPerformed(ActionEvent e) ”. Pada method tersebut berisi actionnya
jika si button di klik . Untuk melengkapi code dalam modul ada beberapa tambahan
seperti pembuat JFrame, JPanel, Contentpane. Ini berfungsi untuk sebagai form untuk
di isi oleh label dan buttonnya.
3
/*
* To change this license header, choose License Headers in
Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul5;
/**
*
* @author Yessi Sofia
*/
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.*;
import java.awt.event.*;
4
public void mouseExited(MouseEvent arg0) {
String msg = "mouse Exited.";
tf.setText(msg);
}
Analisis
Program di atas adalah contoh dari penggunaan event MouseListner dan
MouseMotionlistener. Pada program ini jika semua method dari MouseEventnya tidak
di override maka program tidak akan jalan, karena jika class bukan sebuah abtract maka
method MouseEventnya harus di tuliskan semua.
B. Tugas 5-2
1. Jika salah satu method tidak di override, akan terjadi error karena class interface
maka harus di override semua.
5
No 2,3 dan 4 sudah dimasukan dalam program
2.3 Program 5-3
A. Program 5-3 CloseFrame
Source code
/*
* To change this license header, choose License Headers in
Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul5;
/**
*
* @author Yessi Sofia
*/
import java.awt.*;
import java.awt.event.*;
6
Hasil eksekusi program
Analisis
Program diatas adalah contoh penggunaan WindowsListener untuk methodnya hanya
di isi pada bagian windowClosing. setVisible(false) digunakan untuk menghilakan
frame awt. Sedangkan Class inner adalah class yang tidak berada pada top level atau
class yang dideklarasikan didalam class lain(Outer class).
B. Tugas 5-3
Inner Class adalah suatu Class yang didefinisikan di dalam Class lain. Dengan kata
lain, Inner Class adalah anggota (member) dari Class lain, sama halnya seperti variable
dan method. Hal ini mengakibatkan instance dari Inner Class dapat mengakses /berbagi
dengan instance dari outer Class-nya. Instance dari Inner Class dapat mengakses semua
member dari outer Class-nya, bahkan yang private.
Contoh :
Class OuterClass {
Class InnerClass{
}
}
7
/*
* To change this license header, choose License Headers in
Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul5;
/**
*
* @author Yessi Sofia
*/
import java.awt.*;
import java.awt.event.*;
8
Analisis
Metode diatas merupakan contoh cara penggunaan WindowsAdapter. Jika seseorang
ingin menggunakan method Listener yang di buat dalam satu class yang sama maka
method yang ada di dalam Listener haruslah semuanya di tulis.
/**
*
* @author Yessi Sofia
*/
import java.awt.*;
import java.awt.event.*;
CloseFrame2(String title){
super(title);
label = new Label("Close the frame.");
this.addWindowListener(new CFListener());
}
void launchFrame() {
9
setSize(300,300);
setVisible(true);
}
Analisis
Program diatas merupakan contoh dari inner class pada program 5.4 sudah coba untuk
membuat inner class Untuk mengeksekusi event WindowAdapter dan pada program
5.5 ini adalah untuk mengeksekusi event MouseAdapter
B. Tugas 5-5
10
2.6 Program 5-6
A. Program 5-6 CloseFrame3
Source code
/*
* To change this license header, choose License Headers in
Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul5;
/**
*
* @author Yessi Sofia
*/
import java.awt.*;
import java.awt.event.*;
void launchFrame() {
setSize(300,300);
setVisible(true);
}
11
public static void main(String [] args) {
CloseFrame3 cf = new CloseFrame3("Close Window
Example");
cf.launchFrame();
}
}
Analisis
Metode diatas merupakan contoh cara penggunaan WindowsAdapter. Jika seseorang
ingin menggunakan method Listener yang di buat dalam satu class yang sama maka
method yang ada di dalam Listener haruslah semuanya di tulis.
/**
*
* @author Yessi Sofia
*/
import java.awt.Color;
import java.awt.Dimension;
12
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public BMICalculator() {
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("BMI Calculator");
getContentPane().setLayout(new
BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
txtMass.setPreferredSize(new Dimension(200,30));
txtHeight.setPreferredSize(new
Dimension(200,30));
txtMass.setMaximumSize(txtMass.getPreferredSize());
txtHeight.setMaximumSize(txtHeight.getPreferredSize());
getContentPane().setBackground(new
Color(232,240,255));
getContentPane().add(makePrettyLabel("Your mass
(kg):"));
getContentPane().add(Box.createRigidArea(new
Dimension(5,5)));
getContentPane().add(txtMass);
getContentPane().add(Box.createRigidArea(new
Dimension(5,5)));
getContentPane().add(Box.createVerticalGlue());
getContentPane().add(makePrettyLabel("Your height
(cm):"));
getContentPane().add(Box.createRigidArea(new
Dimension(5,5)));
getContentPane().add(txtHeight);
getContentPane().add(Box.createRigidArea(new
Dimension(5,5)));
getContentPane().add(Box.createVerticalGlue());
getContentPane().add(btnCalc);
getContentPane().add(Box.createRigidArea(new
Dimension(5,5)));
//Add BMI Calculation
13
btnCalc.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent
arg0) {
double mass;
double height;
try {
mass =
Double.parseDouble(txtMass.getText());
height =
Double.parseDouble(txtHeight.getText());
}catch(NumberFormatException e) {
JOptionPane.showMessageDialog(self,"Your BMI
is:"+(Math.round(result*100.0)/100.0),"Your BMI
Result",JOptionPane.PLAIN_MESSAGE);
}
});
pack();
setVisible(true);
}
button.setBorder(BorderFactory.createRaisedBevelBorder(
));
button.setBackground(Color.white);
button.setBackground(new
Color(53,124,255));
return button;
}
field.setHorizontalAlignment(JTextField.RIGHT);
14
field.setBorder(BorderFactory.createLoweredBevelBorder(
));
return field;
}
private JLabel
makePrettyLabel(String title){
JLabel label = new
JLabel(title);
label.setFont(new
Font(Font.SANS_SERIF, Font.BOLD, 14));
label.setForeground(new
Color(53,124,255));
return label;
}
Jika dijalankan
15
Jika ada yang belum diisi
Analisis
Dalam program ini adalah program untuk menghitung calculate BMI yang dimana data
yang dihitung atau diinputkan yaitu kg dan cm di calculate dan hasil akan ditampilkan
pada JoptionPane.
/**
*
* @author Yessi Sofia
*/
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
16
private final String ACTION_CYCLE = "CYCLE COLOR";
private final Color[] COLORS = new Color[] {
Color.white,
Color.green,
Color.red,
Color.yellow,
Color.orange,
Color.pink,
};
private int currentcolor = 0;
private boolean isLightsOn = false;
public DiscoLightsExample() {
setTitle("Disco Light Party Frame");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton btnOffOn = new JButton("Lights ON");
JButton btnColor = new JButton("Cycle Color");
btnOffOn.setActionCommand(ACTION_ON);
btnColor.setActionCommand(ACTION_CYCLE);
btnOffOn.addActionListener(this);
btnColor.addActionListener(this);
getContentPane().add(btnOffOn);
getContentPane().add(btnColor);
pack();
setVisible(true);
}
@Override
getContentPane().setBackground(COLORS[currentcolor]);
((JButton)
ev.getSource()).setText("Lights Off");
((JButton)
ev.getSource()).setActionCommand(ACTION_OFF);
break;
case ACTION_OFF:
isLightsOn = false;
getContentPane().setBackground(Color.black);
((JButton) ev.getSource()).setText("Lights
On");
((JButton)
ev.getSource()).setActionCommand(ACTION_ON);
break;
case ACTION_CYCLE:
if(isLightsOn) {
17
getContentPane().setBackground(COLORS[++currentcolor %
COLORS.length]);
break;
}
}
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new DiscoLightsExample();
}
});
}
}
Hasil eksekusi
Lights on
Lights off
18
Analisis
Dalam program ini menampilkan Disco Light Party apabila menekan Light On maka
tulisan “Got actionLight On” dan tampilan warna akan terlihat didalam frame (frame
terdapat warna ) apabila menekan Light Off maka tulisan “Got actionLight off” dan
tampilan tidak berwarna dan apabila menekan Cycle Color maka tulisan “Got
actionCYCLE COLOR” dan tampilan warna frame akan berubah ubah.
B. Tugas 5-8
InvokeLater () adalah metode di java pada paket swing dan milik kelas SwingUtilities.
Invokelater digunakan oleh pengembang java swing untuk memperbarui atau
melakukan tugas apa pun pada utas pengirim berita dengan asynchronously.
19
BAB 3
TUGAS AKHIR
3.1 Program TicTacToe
Source code
/*
* To change this license header, choose License Headers in
Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modul5;
/**
*
* @author Yessi Sofia
*/
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public TicTacToe()
{
setLayout(new GridLayout(3,3));
initializebuttons();
}
add(buttons[i]);
}
}
public void resetButtons()
{
for(int i = 0; i <= 8; i++)
{
buttons[i].setText("");
20
}
}
if(checkForWin() == true)
{
JOptionPane.showConfirmDialog(null, "Game
Over.");
resetButtons();
}
alternate++;
21
}
22
Analisis
Pada game tictactoe diatas dirancang menggunakan BorderLayout dan GridLayout juga
telah ditambahkan Eventhandler. Komponen yang ada pada Games diatas andalah
Chooser yang dirancang diatas menggunakan BorderLayout yang diselipkan juga
GridLayout serta menambahkan event handler.
23
Bab 4
TUGAS GIT
Membuat Project modul 5
Graph
24
DAFTAR PUSTAKA
Yuniarti.R.[2020].Pemrograman Objek II
ii