Home > Java > MVC pada Swing Java

MVC pada Swing Java

MVC pada Swing Java adalah cara memisahkan antara Model, View dan Controller pada suatu aplikasi dekstop berbasis java yang menggunakan Swing. Tujuan dari menggunakan MVC pada Swing Java adalah memudahkan pengembangan aplikasi tersebut. Karena dengan MVC, aplikasi dibagi menjadi 3 bagian umum yaitu

  • Model representasi  dari  object  yang  sedang  diolah  oleh  aplikasi,   dalam   Java,   model   ini   biasanya   direpresesentasikan
    sebagai   Java  Bean
  • View adalah component yang digunakan untuk merepresentasikan Model dalam bentuk visual seperti JTable, JList, JSlider
  • Controller digunakan untuk mengatur penampilan Model dalam View

Dalam Swing Java penggunakan MVC tidak secara total sama dengan design MVC tradisional karena Controller dan View dijadikan satu yang disebut UI Class. seperti pada gambar dibawah ini.

Tradisional MVC

Tradisional MVC

Tradisional MVC

Swing MVC

Swing MVC

Swing MVC

Setiap component Swing mempunyai model, tapi pada kasus normal kita tidak perlu memikirkan model dari component Swing. Component Swing yang sering dilakukan kustomasi adalah JTable, JSlider. Dalam kesempatan kali ini saya akan menggunakan JTable sebagai contoh penggunaan MVC pada Swing Java

model untuk JTable adalah TableModel. Sedankan TableModel sendiri adalah sebuah Interface. sehingga kita tidak bisa menggunakan secara langsung untuk mendefinisikan model untuk JTable. Ada dua abstract class yang menggunakan Interface TableModel yaitu AbstractTableModel dan DefaultTableModel. Sehingga kita tinggal extends salah satu dari dua abstract class tersebut. Dalam kesempatan ini saya menggunakan AbstractTableModel.

Langkah satu. Buat class POJO untuk model

Student.java

package model;

/**
*
* @author Taeyeon
*/
public class Student {
private String nama;
private String alamat;
private int nim;
private String jurusan;

/**
* @return the nama
*/
public String getNama() {
return nama;
}

/**
* @param nama the nama to set
*/
public void setNama(String nama) {
this.nama = nama;
}

/**
* @return the alamat
*/
public String getAlamat() {
return alamat;
}

/**
* @param alamat the alamat to set
*/
public void setAlamat(String alamat) {
this.alamat = alamat;
}

/**
* @return the nim
*/
public int getNim() {
return nim;
}

/**
* @param nim the nim to set
*/
public void setNim(int nim) {
this.nim = nim;
}

/**
* @return the jurusan
*/
public String getJurusan() {
return jurusan;
}

/**
* @param jurusan the jurusan to set
*/
public void setJurusan(String jurusan) {
this.jurusan = jurusan;
}
}

Langkah dua. Buat class yang meng-extends abstract class AbstractTableModel

StudentTableModel.java

package model;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
*
* @author Taeyeon
*/
public class StudentTableModel extends AbstractTableModel {
List <Student> list = new ArrayList <Student>();
// private String[] header = {“Nama”, “NIM”,”Jurusan”, “Alamat”};

public Student getStudent(int index){
return list.get(index);
}

public void insert(Student student)
{
list.add(student);
fireTableRowsInserted(getRowCount()-1,getRowCount()-1);
}
public void update(Student student, int index)
{
list.set(index, student);
fireTableRowsUpdated(index,index);
}
public void delete(int index)
{
list.remove(index);
fireTableRowsDeleted(index,index);
}

public int getRowCount() {
return list.size();
}

public int getColumnCount() {
return 5;
}

public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case 0:
return list.get(rowIndex).getNama();
case 1:
return list.get(rowIndex).getNim();
case 2:
return list.get(rowIndex).getJurusan();
case 3:
return list.get(rowIndex).getAlamat();
default:
return null;
}
}
@Override
public String getColumnName(int column){
switch(column){
case 0:
return (“Nama”);
case 1:
return(“Nim”);
case 2:
return(“Jurusan”);
case 3:
return(“Alamat”);
case 4:
return(“Email”);
default:
return null;
}
}

}

Langkah tiga. Buat tampilan aplikasi sebagai berikut dengan nama class ViewForm

ViewForm.java

View Aplikasi

View Aplikasi

Tambahkan kode berikut pada constructor class ViewForm.java

public ViewForm() {
initComponents();
tableModel = new StudentTableModel();
tbStudent.setModel(tableModel);
}

Kode untuk event tambah

private void btTambahActionPerformed(java.awt.event.ActionEvent evt) {
Student student = new Student();
student.setNama(tfNama.getText());
student.setNim(Integer.parseInt(tfNim.getText()));
student.setAlamat(tfAlamat.getText());
student.setJurusan(cbJurusan.getSelectedItem().toString());
tableModel.insert(student);
}

kode untuk event ubah

private void btUbahActionPerformed(java.awt.event.ActionEvent evt) {
int index = tbStudent.getSelectedRow();
if(index==-1) return;
Student student = tableModel.getStudent(index);
student.setNama(tfNama.getText());
student.setNim(Integer.parseInt(tfNim.getText()));
student.setAlamat(tfAlamat.getText());
student.setJurusan(cbJurusan.getSelectedItem().toString());
tableModel.update(student, index);
}
kode untuk event hapus

private void btHapusActionPerformed(java.awt.event.ActionEvent evt) {
int index = tbStudent.getSelectedRow();
if (index == -1)
return;
tableModel.delete(index);
}

kode untuk event mouse click pada JTable

private void tbStudentMouseClicked(java.awt.event.MouseEvent evt) {
int index = tbStudent.getSelectedRow();
Student student = tableModel.getStudent(index);
tfNama.setText(student.getNama());
tfAlamat.setText(student.getAlamat());
cbJurusan.setSelectedItem(student.getJurusan().toString());

}

Referensi : dari berbagai sumber
Semoga Bermanfaat
Salah koreksi saya😀

link download program diatas.

  1. June 23, 2011 at 22:35

    assalamualaikum wr.wb
    ini program memakai database atau tidak??
    tolong penjelasannya..
    makasih sebelumnya

    • Ren
      June 24, 2011 at 01:04

      waalaikumslam. program ini TIDAK menggunakan database. Tapi menggunakan class List dan ArrayList.
      jadi klo program di close, data yang diimputkan otomatis hilang ( sementara )

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: