Model View Control Sederhana dengan Swing

Di tulisan sebelumnya udah dibahas tentang apa itu MVC. Mungkin masih banyak yang belum paham bener dengan teknik MVC, sebenarnya di Blog ini udah ada contoh program yang dibangun dengan teknik MVC seperti Login Sederhana. Namun mungkin masih dianggap agak ribet juga karena program tersebut telah terhubung dengan Database MySQL.

Untuk memperjelas aja, di tulisan kali ini kita akan buat program SayHello menggunakan Swing dengan memanfaatkan teknik MVC.

Langsung aja kalo gitu. Jangan lupa buat projectnya lebih dulu dan buat class – class sepeerti digambar berikut :

Buat class-class dan interface seperti gambar diatas. Kemudia dilanjutkan denga coding program MVC SayHello yang akan dibuat, codingnya saya bagi menjadi tiga bagian.

Control

Dibagian ini kita lakukan coding untuk interfaces Confirm dan ListenerMain serta class ControlMain.
Interfaces Confirm digunakan untuk memberikan peringatan ke User jika terjadi kesalahan dalam pengisian nama, misal namanya kosong.

package achmad.lutfi.controls;
/*
 *
 * @author  Achmad Lutfi
 * Email    achmadlutfi@gmail.com
 */
public interface Confirm {
    void onWarning(String message);
}

Interfaces ListenerMain digunakan untuk menangkap perubahan nama yang terjadi dimodel dan memberitahukannya ke ViewMain dan menampilkannya ke User

package achmad.lutfi.controls.events;

import achmad.lutfi.models.ModelMain;

/*
 *
 * @author  Achmad Lutfi
 * Email    achmadlutfi@gmail.com
 */
public interface ListenerMain {
    void onChange(ModelMain modelMain);
}

Untuk ControlMain, digunakan untuk melakukan proses validasi atas input nama yang diberikan oleh user ke View dan meneruskan data nama tersebut ke model.

package achmad.lutfi.controls;

import achmad.lutfi.models.ModelMain;
import achmad.lutfi.views.ViewMain;

/*
 *
 * @author  Achmad Lutfi
 * Email    achmadlutfi@gmail.com
 */
public class ControlMain {
    private ModelMain modelMain;

    public void setModelMain(ModelMain modelMain) {
        this.modelMain = modelMain;
    }

    public void sayHello(ViewMain viewMain, Confirm confirm){
        String nama = viewMain.getTxtNama().getText();

        if(nama.trim().isEmpty()){
            confirm.onWarning(“Nama Tidak Boleh Kosong !!”);
            return;
        }

        modelMain.setNama(nama);
    }
}

Model

Dikelas ModelMain ini, data yang telah diinputkan diproses dan disimpan sementara dan kemudian memberikan data tersebut ke View untuk ditampilkan ke User.

package achmad.lutfi.models;

import achmad.lutfi.controls.events.ListenerMain;

/*
 *
 * @author  Achmad Lutfi
 * Email    achmadlutfi@gmail.com
 */
public class ModelMain {
    private ListenerMain listenerMain;
    private String nama;

    public void setListenerMain(ListenerMain listenerMain) {
        this.listenerMain = listenerMain;
    }

    public void setNama(String nama){
        this.nama = nama;
        if(listenerMain != null){
            listenerMain.onChange(this);
        }
    }

    public String sayHello(){
        return “Hallo “+ nama + ” !”;
    }
}

View

Di kelas View ini digunakan untuk menampilkan interface GUi ke User dan digunakan untuk menerima input nama dari User. Untuk kelas ViewMain menggunakan JFrame.

/**
 *
 * @author Fresh
 */
public class ViewMain extends javax.swing.JFrame implements Confirm, ListenerMain {
    private ControlMain controlMain;
    private ModelMain modelMain;
    /** Creates new form ViewMain */
    public ViewMain() {
        modelMain = new ModelMain();
        controlMain = new ControlMain();
        modelMain.setListenerMain(this);
        controlMain.setModelMain(modelMain);

        initComponents();
    }

    private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
        controlMain.sayHello(this, this);
    }

    ………….
    ………….

    public JTextField getTxtNama() {
        return txtNama;
    }

    @Override
    public void onWarning(String message) {
        JOptionPane.showMessageDialog(rootPane, message, “Warning”, JOptionPane.WARNING_MESSAGE);
    }

    @Override
    public void onChange(ModelMain modelMain) {
        JOptionPane.showMessageDialog(rootPane, modelMain.sayHello(), “Say Hello”, JOptionPane.INFORMATION_MESSAGE);
    }
}

Kalo codingnya sudah selesai, coba jalankan projectnya. Tampilannya akan seperti ini :

Buat yang mau download Source Codenya, download disini http://www.4shared.com/file/l1wKOkkF/SayHello.html

, , , , ,

  1. #1 by lucman edogawa on January 15, 2012 - 5:18 pm

    mas lek nduwe pdf e mvc aq njaluk yo

    • #2 by Achmad on January 17, 2012 - 5:06 pm

      Gampang Luk…

  2. #3 by nitho on July 16, 2012 - 9:15 am

    aku juga boleh minta gak??

    • #4 by Achmad on July 18, 2012 - 6:42 am

      Boleh aja kok. Tapi yang q punya hanya yang bentukl video aja.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.