8. Form & Event Handling

8

Form adalah tampilan user interface yang disediakan oleh bahasa pemrograman agar mudah untuk menjalankan sebuah program.

Form adalah tampilan user interface yang disediakan oleh bahasa pmrograman agar mudah untuk menjalankan sebuah program. Event handler adalah sebuah method yang dapat mendeteksi suatu kejadian yang terjadi pada sebuah form, contoh ketika sebuah button di Click maka program akan melakukan sebuah eksekusi  perintah yang ada pada event handlernya.
Event handler adalah sebuah method yang dapat mendeteksi suatu kejadian yang terjadi pada sebuah form, contoh ketika sebuah button di Click maka program akan melakukan sebuah eksekusi perintah yang ada pada event handlernya.

Capture000000

Event Handling adalah konsep penanganan suatu aksi yang terjadi.Contohnya adalah seperti yang akan saya tulis pada source code di bawah ini adalah ketika buttonklik kita klik,maka akan terjadi suatu aksi,yaitu menampilkan sebuah pop up pesan.Event Handling tidak hanya button saja tapi juga bisa digunakan untuk komponen Swing lainnya.Java memiliki beberapa jenis Event Handling.
Dalam event handling pada Java ada empat bagian penting yang harus diketahui:
  1. Event Object merupakan object yang mendiskripsikan sebuah event yang di-trigger oleh event source.
  2. Event Handler merupakan method yang menerima event object dan melakukan respond yang sesuai dengan event object tersebut.
  3. Event Listener merupakan interface yang akan meng-handle event yang terjadi. setiap type event mempunyai interface yang bersesuaian. Listener tersebut harus diimplementasikan oleh class yang akan meng-handle event
  4. Event Source merupakan pembangkit / trigger sebuah event objects

Event merupakan respon dari program ketika user melakukan tindakan terhadap GUI tertentu dalam aplikasi.

Agar komponen GUI yang kita buat dapat menghasilkan event ketika ada interaksi dari user terhadap GUI, seperti menekan tombol, keyboard, menggerakan mouse, dan sebagainya, diperlukan listener untuk melakukannya.

Dengan adanya listener ini, event yang dihasilkan dari GUI dapat merespon dari suatu interaksi yang ditujukan kepada suatu instruksi program.

Untuk dapat menggunakan listener, diperlukan sebuah Class yang terdapat pada java.awt.event.*;.

1. Elemen-elemen Event

Pemahaman mengenai elemen-elemen pada event mutlak diperlukan demi penangan event itu sendiri agar dapat berjalan sesuai instruksi. Berikut elemen-elemen pada event.

a. Event Source

Event source merupakan pembankit sebuah event. Contoh, klik mouse pada button akan membangkitkan sebuah ActionEvent, button tersebut berfungsi sebagai event sourcenya.

b. Event Handler

Event handler merupakan method yang menerima sebuah objek event, mendeklarasikan kemudian memproses interaksi dengan user.

awt merupakan package GUI yang menangani event, dengan interface yang disebut event listener. Setiap event terdapat interface listener, yang harus diisikan kedalam class dari object yang akan menerima event. Listener akan menetapkan method yang didefinisikan untuk menerima jenis event tsb. Method ini akan dipanggil dan dijalankan ketika event terjadi.

2. Kategori Event

a. Action, merupakan interface dari ActionListener, dengan method actionPerformed(ActionEvent).

b. Item, merupakan interface dari ItemListener, dengan method itemStateChange(ItemEvent).

c. Mouse, merupakan interface daru MouseListener, dengan 5 method:

> mouseClicked(MouseEvent)

> mousePressed(MouseEvent)

> mouseReleased(MouseEvent)

> mouseEntered(MouseEvent)

> mouseExited(MouseEvent)

d. Mouse motion, merupakan interface dari MouseMotionListener, dengan method mouseDragged(MouseEvent)

e. Key, merupakan interface dari KeyListener, dengan 3 method :

> keyPressed(KeyEvent)

> keyReleased(KeyEvent)

> keyTyped(KeyEvent)

f. Focus, merupakan interface dari FocusListener, dengan 2 method :

> focusGained(FocusEvent)

> focusLast(FocusEvent)

d. Window, merupakan interface dari WindowsListener, dengan 4 method :

> windowClosing(WindowEvent)

> windowOpened(WindowEvent)

> windowActived(WindowEvent)

> windowDeactived(WindowEvent)

setiap event object mempunyai  type event yang berbdea beda. sehingga kita harus menentukan type event sebelum menentukan jenis interface listener. karena setiap type event mempunyai jenis interface listener yang bersesuaian.
berikut ini type type event yang ada di Java :
  1. ActionEvent
  2. ItemEvent
  3. WindowEvent
  4. ContainerEvent
  5. ComponentEvent
  6. FocusEvent
  7. TextEvent
  8. KeyEvent
  9. MouseEvent
  10. AdjustmentEvent
Berikut ini Interface Listener
  1. ActionListener
  2. ItemListener
  3. WindowListener
  4. ContainerListener
  5. ComponentListener
  6. FocusListener
  7. TextListener
  8. KeyListener
  9. MouseListener
  10. MouseMotionListener
  11. AdjustmentListener
Berdasarkan tulisan diatas, setiap type event mempunyai satu jenis interface listener kecuali MouseEvent yang mempunyai dua jenis interface listener. dan setiap interface mempunyai method abstract yang harus di override class yang meng-impletasikan interface. event listener dan event handler terdapat pada package java.awt.event
Bagaimana event handling dalam Java? ada tiga langkah penting dalam event handling
  1. Deklarasikan class yang akan meng-handle event yang terjadi dan tuliskan code yang menyatakan class tersebut meng-implement interface listener
  2. Event source mendaftarkan sebuah listener melalui method add<type>Listener
  3. Kode yang mengimplementasikan method pada interface listener pada class yang akan meng-handle event. [ Override ]

Contoh Program dengan C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace OOP2_Widy_EventHandling
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{

}

private void label4_Click(object sender, EventArgs e)
{

}

private void textBox3_TextChanged(object sender, EventArgs e)
{

}
int bil1, bil2, jumlah, kurang;
private void button3_Click(object sender, EventArgs e)
{
bil1 = Convert.ToInt32(textBox1.Text);

bil2= Convert.ToInt32(textBox2.Text);

jumlah = bil1 + bil2;
textBox3.Text = jumlah.ToString();
}

private void button2_Click(object sender, EventArgs e)
{
bil1 = Convert.ToInt32(textBox1.Text);

bil2 = Convert.ToInt32(textBox2.Text);

kurang = bil1 - bil2;
textBox3.Text = kurang.ToString();
}
}
}



Hasilnya Adalah Seperti Ini :

1

1a
Selanjutnya Adalah Conroh Program dengan Menggunakan C++

#pragma once


namespace OOP2_WidyC_EventHandling {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}

protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^  label1;
protected:
private: System::Windows::Forms::Label^  label2;
private: System::Windows::Forms::Label^  label3;
private: System::Windows::Forms::Label^  label4;
private: System::Windows::Forms::TextBox^  textBox1;
private: System::Windows::Forms::TextBox^  textBox2;
private: System::Windows::Forms::TextBox^  textBox3;
private: System::Windows::Forms::Button^  button1;
private: System::Windows::Forms::Button^  button2;

private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->label4 = (gcnew System::Windows::Forms::Label());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
this->textBox3 = (gcnew System::Windows::Forms::TextBox());
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// label1
//
this->label1->AutoSize = true;
this->label1->Font = (gcnew System::Drawing::Font(L"Algerian", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(0)));
this->label1->Location = System::Drawing::Point(25, 9);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(214, 15);
this->label1->TabIndex = 0;
this->label1->Text = L"PERHITUNGAN KALKULATOR WIDY";
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(25, 106);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(57, 13);
this->label2->TabIndex = 1;
this->label2->Text = L"Bilangan 2";
this->label2->Click += gcnew System::EventHandler(this, &Form1::label2_Click);
//
// label3
//
this->label3->AutoSize = true;
this->label3->Location = System::Drawing::Point(25, 44);
this->label3->Name = L"label3";
this->label3->Size = System::Drawing::Size(57, 13);
this->label3->TabIndex = 2;
this->label3->Text = L"Bilangan 1";
this->label3->Click += gcnew System::EventHandler(this, &Form1::label3_Click);
//
// label4
//
this->label4->AutoSize = true;
this->label4->Location = System::Drawing::Point(25, 207);
this->label4->Name = L"label4";
this->label4->Size = System::Drawing::Size(30, 13);
this->label4->TabIndex = 3;
this->label4->Text = L"Hasil";
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(28, 70);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(224, 20);
this->textBox1->TabIndex = 4;
//
// textBox2
//
this->textBox2->Location = System::Drawing::Point(28, 132);
this->textBox2->Name = L"textBox2";
this->textBox2->Size = System::Drawing::Size(224, 20);
this->textBox2->TabIndex = 5;
//
// textBox3
//
this->textBox3->Location = System::Drawing::Point(61, 207);
this->textBox3->Name = L"textBox3";
this->textBox3->Size = System::Drawing::Size(191, 20);
this->textBox3->TabIndex = 6;
//
// button1
//
this->button1->Location = System::Drawing::Point(28, 170);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(38, 23);
this->button1->TabIndex = 7;
this->button1->Text = L"+";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(214, 170);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(38, 23);
this->button2->TabIndex = 8;
this->button2->Text = L"--";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(192)), static_cast<System::Int32>(static_cast<System::Byte>(192)),
static_cast<System::Int32>(static_cast<System::Byte>(255)));
this->ClientSize = System::Drawing::Size(284, 262);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Controls->Add(this->textBox3);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->label4);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->Name = L"Form1";
this->Text = L"OOP2_WidyC++_EventHandling";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
this->PerformLayout();

}
#pragma endregion
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
}

private: System::Void label3_Click(System::Object^  sender, System::EventArgs^  e) {
}
private: System::Void label2_Click(System::Object^  sender, System::EventArgs^  e) {
}
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
int bil1,bil2,tambah,kurang;

bil1 = System :: Convert :: ToInt32(textBox1 -> Text);
bil2 = System ::Convert ::ToInt32(textBox2 -> Text);

tambah = bil1 + bil2;

(textBox3 -> Text) = System :: Convert :: ToString (tambah);

}
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
int bil1,bil2,tambah,kurang;

bil1 = System :: Convert :: ToInt32(textBox1 -> Text);
bil2 = System ::Convert ::ToInt32(textBox2 -> Text);

kurang = bil1 - bil2;

(textBox3 -> Text) = System :: Convert :: ToString (kurang);

}
};
}


Hasilnya Seperti Ini :

2

2a

Serta berikut Contoh Program yang Menggunakan Bahasa Java



package oop2_widy_evenhandling;

/**
*
* @author indrawsp
*/
public class Perhitungan_Kalkulator_Widy extends javax.swing.JFrame {

/** Creates new form Perhitungan_Kalkulator_Widy */
public Perhitungan_Kalkulator_Widy() {
initComponents();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setText("PERHITUNGAN KALKULATOR WIDY");

jLabel2.setText("Bilangan 1");

jLabel3.setText("Bilangan 2");

jLabel4.setText("Hasil");

jTextField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1ActionPerformed(evt);
}
});

jTextField2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField2ActionPerformed(evt);
}
});

jTextField3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField3ActionPerformed(evt);
}
});

jButton1.setText("+");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setText("--");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(30, 30, 30)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1)
.addContainerGap())
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE)
.addGap(80, 80, 80))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 90, Short.MAX_VALUE)
.addComponent(jLabel1)
.addGap(112, 112, 112))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 290, Short.MAX_VALUE)
.addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 290, Short.MAX_VALUE)
.addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton2))
.addContainerGap(80, javax.swing.GroupLayout.PREFERRED_SIZE)))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(jLabel2)
.addGap(5, 5, 5)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel3)
.addGap(18, 18, 18)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(9, 9, 9)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(85, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int bil1,bil2,tambah,kurang;
String Hasil;

bil1 = Short.valueOf(jTextField1.getText());
bil2 = Short.valueOf(jTextField2.getText());
tambah = bil1 + bil2;
Hasil = String.valueOf(tambah);
jTextField3.setText(Hasil);
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int bil1,bil2,tambah,kurang;
String Hasil;

bil1 = Short.valueOf(jTextField1.getText());
bil2 = Short.valueOf(jTextField2.getText());
kurang = bil1 - bil2;
Hasil = String.valueOf(kurang);
jTextField3.setText(Hasil);
}

private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Perhitungan_Kalkulator_Widy().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
// End of variables declaration

}


Maka Berikut hasilnya :

CaptureF CaptureG

5 responses to “8. Form & Event Handling

  1. wah… mantap sekali programnya… lengkap!!!!!

  2. ikut copas ya mbk brooo

  3. NumpaNg liat2 ya wid, skalian copy ya
    hehehe

  4. aku suka project ini mbk broo. boleh intip yaa

  5. Maap gan. Ralat dikit, itu yang kategori event Focus harusnya focusGained(FocusEvent) dan focusLost(FocusEvent).
    Maap barangkali typo atau lupa, saya betulin.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s