Plugin yang Wajib Digunakan untuk Eclipse IDE | StripBandunk


Eclipse IDE merupakan IDE untuk Java yang sampai sekarang merupakan IDE yang paling populer. Hampir kebanyakan orang saat ini menggunakan Eclipse IDE. Bahkan sekarang Eclipse IDE tidak hanya untuk Java, ada juga untuk PHP, C/C++, Scala, Python sampai Ruby.

Pada artikel ini saya akan membahas plugin-plugin yang wajib digunakan saat kita menginstall Eclipse IDE. Plugin-plugin ini hanyalah plugin-plugin yang menurut saya sangat berguna πŸ˜€ Dan belum tentu berguna untuk Anda

Plugin yang Wajib Digunakan untuk Eclipse IDE | StripBandunk.

Menyimpan Data dalam JTable ke Berkas Microsoft Excel | StripBandunk


Pada artikel kali ini, saya akan menjelaskan tutorial cara menyimpan data yang terdapat pada JTable (Java Swing) ke dalam berkas Microsoft Excel. Hal ini dapat mempermudah kita, saat akan menyimpan data yang ada dalam JTable, atau saat data yang ada dalam JTable dibutuhkan dalam benduk dokumen (misal Excel).

Untuk membantu mempermudah proses konversi ke berkas Microsoft Excel, saya menggunakan Apache POI. Apache POI merupakan framework yang dapat kita gunakan untuk menyimpan data dalam bentuk berkas-berkas Microsoft Office (Word, Excel, Power Point dan lain-lain).

Menyimpan Data dalam JTable ke Berkas Microsoft Excel | StripBandunk.

Menampilkan JCheckBox di JTable


Java Programming

Java Programming

Peralatan yang diperlukan :

  1. Java Development Kit 1.6

Biasanya jika kita akan menghapus sebuah baris di JTable, kita menseleksinya lalu tekan delete atau klik tombol hapus, tapi bagaimana jika kita akan menghapus beberapa baris? Dan barisnya itu terpisah-pisah? Hmm, salah satunya adalah dengan memberi kolom Hapus, jika bernilai TRUE, maka baris tersebut akan dihapus πŸ˜€ Dan supaya lebih bermakna kita ubah tampilan kolom hapusnya itu dengan JCheckBox, daripada menggunakan tulisan true atau false πŸ˜€ Baca lebih lanjut

Membatasi Karakter yang Masuk dalam JTextField di Java Swing


pada artikel kali ini, saya akan sharing ilmu tentang cara membatasi banyak karakter yang boleh masuk ke jtextfield. jtextfield dalam swing memang tidak seperti textbox yang ada di vb atau bahasa visual lainnya, di swing, sebuah jtextfield secara default tidak terbatas karakter yang dapat dimasukkan, artinya kita tidak membatasi banyak karakter yang boleh masuk.

tapi bukan berarti tidak bisa, sebenarnya bisa, namun caranya tidak semudah di vb atau delphi. dalam swing, anda harus membuat model untuk jtextfield secara manual, dimana model untuk jtextfield adalah document. artinya anda perlu membuat document baru yang akan digunakan untuk membatasi jumlah karakter.

pertama, buatlah sebuah project java application.

kedua, saatnya membuat document sendiri, dimana document yang dibuat turunan dari plaindocument, bukan document, hal ini dikarenakan untuk memudahkan dalam pembuatan kelas baru, karena tidak perlu melakukan proses implementasi metode seluruhnya.

terakhir, saatnya mencoba document yang telah dibuat.

tidak terlalu sulit bukan?

walaupun memang tidak semudah di vb atau di delphi πŸ˜€

silahkan download sourcecodenya disini :

http://swing-usu.googlecode.com/files/text-max.zip

Training Pengenalan Java Swing


Baru saja pulang dari training Pengenalan Java Swing atas kerjasama Java User Group Bandung dan Universitas Pendidikan Indonesia. Ini slide materi Pengenalan Java Swing yang tadi saya bawakan πŸ˜€

Membuat Pagination untuk JTable dan Java Persistence API 2


Peralatan yang diperlukan untuk tutorial ini :

  1. Java Development Kit 1.6
  2. NetBeans IDE 6.8
  3. EclipseLink 2 (Terbundle dalam NetBeans IDE 6.8)
  4. MySQL Database Server

Jika seluruh peralatan terlah tersedia, berarti Anda dapat mengikuti tutorial ini πŸ˜€

Membuat Project Java Application

JTable merupakan komponen antar muka tabel / grid yang terdapat pada Java Swing. Untuk membuat aplikasi berbasis antar muka, kita harus membuat project jenis java application pada netbeans, caranya : File -> New Project, setelah itu pada bagian Categories pilih Java dan pada bagian Types pilih Java Application :

Memuat Persistence Unit

Agar proyek yang Anda buat mendukung fitur Java Persistence API, maka Anda harus membuat Persistence Unit. Untuk membuat persistence unit, caranya lewat menu File -> New File, lalu pada bagian Categories pilih Persistence dan pada bagian Types pilih Persistence Unit. Setelah itu klik Next :

Jangan lupa untuk membuat database jika memang database untuk proyek ini belum ada, sehingga pada combo box Database Connection tinggal buat koneksi baru :

Membuat Entity

Dalam sebuah proyek yang menggunakan JPA, tidak ada yang namanya Tabel. seluruh Tabel harus ditransformasikan menjadi Entitas, atau disebut Entity. Misal pada proyek ini kita buat entitas yang sederhana, yaitu entitas data, yang hanya menamping ID dan DATA. Untuk membaut entitas, caranya lewat menu File -> New File, setelah itu pada bagian Categories pilih Persistence, dan pada bagian Types pilih Entity Class. Setelah itu klik Next :

Isi dari entitas Data adalah seperti dibawah ini :

package khannedy.pagination.helper;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 *
 * @author echo
 */
@Entity
@Table(name = "datas")
public class Data implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String data;

    public Long getId() {
	return id;
    }

    public void setId(Long id) {
	this.id = id;
    }

    public String getData() {
	return data;
    }

    public void setData(String data) {
	this.data = data;
    }

    @Override
    public int hashCode() {
	int hash = 0;
	hash += (id != null ? id.hashCode() : 0);
	return hash;
    }

    @Override
    public boolean equals(Object object) {
	// TODO: Warning - this method won't work in the case the id fields are not set
	if (!(object instanceof Data)) {
	    return false;
	}
	Data other = (Data) object;
	if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
	    return false;
	}
	return true;
    }

    @Override
    public String toString() {
	return "khannedy.pagination.helper.Data[id=" + id + "]";
    }
}

Membuat TableModel

Dikarenakan kita menggunakan JTable, jadi harus membuat TableModel. TableModel ini digunakan untuk menampung data pada JTable yang memuat data-data enitas Data. Isinya seperti ini :

package khannedy.pagination.helper;

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

/**
 *
 * @author echo
 */
public class TableModelData extends AbstractTableModel {

    private static final long serialVersionUID = 1L;

    private List datas = new ArrayList();

    public void setData(Collection collection) {
	datas.clear();
	datas.addAll(collection);
	fireTableDataChanged();
    }

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

    public int getColumnCount() {
	return 2;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
	switch (columnIndex) {
	    case 0:
		return datas.get(rowIndex).getId();
	    case 1:
		return datas.get(rowIndex).getData();
	    default:
		return null;
	}
    }

    @Override
    public String getColumnName(int column) {
	switch (column) {
	    case 0:
		return "Id";
	    case 1:
		return "Data";
	    default:
		return null;
	}
    }
}

Membuat Form

Setelah itu buat Form untuk tampilan antar muka aplikasinya. Untuk membuat Form dalam NetBeans caranya lewat menu File -> New File, setelah itu pada bagian Categories pilih Swing GUI Form dan pada bagian Types pilih JFrame Form. Setelah itu beri nama Form nya, misal Form :

Misal saya membuat tampilan form seperti pada gambar dibawah ini :

Untuk nama-nama komponennya anda bisa melihatnya pada gambar dibawah ini :

Membuat Pagination

Setelah selesai membuat Form, saatnya membuat Pagination. Ini merupakan utilitas yang dapat kita gunakan untuk mempermudah penghalamanan tabel yang akan digunakan. Caranya buat sebuah class java bernama Pagination, isinya seperti pada kode dibawah ini :

package khannedy.pagination.helper;

/**
 *
 * @author echo
 */
public class Pagination {

    private int pageSize;

    private int totalItem;

    private int currentPage;

    public Pagination(int pageSize, int totalItem) {
	this.pageSize = pageSize;
	this.totalItem = totalItem;
    }

    public int getPageSize() {
	return pageSize;
    }

    public int getTotalItem() {
	return totalItem;
    }

    public int getTotalPage() {
	return (totalItem / pageSize) - 1;
    }

    public int getCurrentPage() {
	return currentPage;
    }

    public int getCurrentItem() {
	return currentPage * pageSize;
    }

    public void nextPage() {
	currentPage++;
    }

    public void prevPage() {
	currentPage--;
    }

    public void firstPage() {
	currentPage = 0;
    }

    public void lastPage() {
	currentPage = getTotalPage();
    }

    public boolean isHasNextPage() {
	return currentPage < getTotalPage();
    }

    public boolean isHasPrevPage() {
	return currentPage != 0;
    }
}

Membuat PersistenceHelper

Setelah membuat pagination, sekarang saatnya membuat PersistenceHelper, kelas ini berisikan utilitas yang digunakan untuk mendapatkan EntityManagerFactory-nya JPA 2. Kelas ini bisa juga disebut kelas Database Creator πŸ˜€

package khannedy.pagination.helper;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author echo
 */
public class PersistenceHelper {

    private static final EntityManagerFactory factory;

    static {
	factory = Persistence.createEntityManagerFactory("paginationPU");
    }

    public static EntityManagerFactory getFactory() {
	return factory;
    }
}

Menambahkan Pagination ke Form

Setelah membuat kelas Pagination saatnya membuat Form yang mendukung fotur Pagination. Pertama sebelum menambah fitur pagination, kita harus menambahkan TableModel terlebih dahulu ke JTablenya, sehingga isi konstruktur Form nya seperti bawah ini :

public class Form extends javax.swing.JFrame {

    private static final long serialVersionUID = 1L;

    private TableModelData tableModel;

    /** Creates new form Form */
    public Form() {
        initComponents();

	tableModel = new TableModelData();
	tableData.setModel(tableModel);
    }

Setelah menambahkan TableModel, saatnya meload data dari Persistence ke TableModel, namun syaratnya harus menggunakan pagination, jadi kodenya seperti dibawah ini :

public class Form extends javax.swing.JFrame {

    private static final long serialVersionUID = 1L;

    private TableModelData tableModel;

    private Pagination pagination;

    /** Creates new form Form */
    public Form() {
	initComponents();

	tableModel = new TableModelData();
	tableData.setModel(tableModel);

	// deklarasikan Pagination
	initPagination();

	// refresh data
	refresh();
    }

    public void initPagination() {
	EntityManager manager = PersistenceHelper.getFactory().createEntityManager();
	try {
	    CriteriaBuilder builder = manager.getCriteriaBuilder();
	    CriteriaQuery query = builder.createQuery(Long.class);

	    Root data = query.from(Data.class);
	    query.select(builder.count(data));

	    int count = manager.createQuery(query).getSingleResult().intValue();

	    pagination = new Pagination(100, count);

	} finally {
	    manager.close();
	}
    }

    public void refresh() {
	EntityManager manager = PersistenceHelper.getFactory().createEntityManager();
	try {
	    CriteriaBuilder builder = manager.getCriteriaBuilder();
	    CriteriaQuery query = builder.createQuery(Data.class);

	    Root data = query.from(Data.class);
	    query.select(data);

	    List list = manager.createQuery(query).
		    setFirstResult(pagination.getCurrentItem()).
		    setMaxResults(pagination.getPageSize()).getResultList();

	    tableModel.setData(list);

	    buttonNext.setEnabled(pagination.isHasNextPage());
	    buttonPrev.setEnabled(pagination.isHasPrevPage());

	} finally {
	    manager.close();
	}
    }

Setelah itu tambahkan aksi tombolFirst, caranya klik kanan tombolnya lalu pilih Events -> Action -> actionPerformed :

    private void buttonFirstActionPerformed(java.awt.event.ActionEvent evt) {
	// TODO add your handling code here:
	pagination.firstPage();
	refresh();
    }

Untuk aksi buttonPrev :

    private void buttonPrevActionPerformed(java.awt.event.ActionEvent evt) {
	// TODO add your handling code here:
	pagination.prevPage();
	refresh();
    }

Untuk aksi buttonNext :

    private void buttonNextActionPerformed(java.awt.event.ActionEvent evt) {
	// TODO add your handling code here:
	pagination.nextPage();
	refresh();
    }

Untuk aksi buttonLast :

    private void buttonLastActionPerformed(java.awt.event.ActionEvent evt) {
	// TODO add your handling code here:
	pagination.lastPage();
	refresh();
    }

Dan jika selesai πŸ˜€

jika dijalankan….

wew kok error 😦

run:
[EL Info]: 2010-04-09 00:30:07.939--ServerSession(1680250)--EclipseLink, version: Eclipse Persistence Services - 2.0.1.v20100213-r6600
[EL Severe]: 2010-04-09 00:30:07.964--ServerSession(1680250)--Local Exception Stack:
Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Configuration error.  Class [com.mysql.jdbc.Driver] not found.
Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
        at org.eclipse.persistence.exceptions.DatabaseException.configurationErrorClassNotFound(DatabaseException.java:82)
        at org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(DefaultConnector.java:267)
Exception Description: Configuration error.  Class [com.mysql.jdbc.Driver] not found.
        at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:85)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:397)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:151)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:207)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195)
        at khannedy.pagination.helper.Form.initPagination(Form.java:43)
        at khannedy.pagination.helper.Form.(Form.java:39)
        at khannedy.pagination.helper.Form$5.run(Form.java:200)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Configuration error.  Class [com.mysql.jdbc.Driver] not found.
        at org.eclipse.persistence.exceptions.DatabaseException.configurationErrorClassNotFound(DatabaseException.java:82)
        at org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(DefaultConnector.java:267)
        at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:85)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:584)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:369)
        ... 14 more
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:584)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:369)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:151)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:207)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195)
        at khannedy.pagination.helper.Form.initPagination(Form.java:43)
        at khannedy.pagination.helper.Form.(Form.java:39)
        at khannedy.pagination.helper.Form$5.run(Form.java:200)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

BUILD STOPPED (total time: 17 seconds)

Tenang, tenang πŸ˜€ Itu cuma Driver MySQL nya belum dimasukkan ke Project. TInggal dimasukkan aja ke project… πŸ˜€ Dan sekarang :

Hmm…. Lumayan..

Dah malam ah, dah ngantuk, tar gak bisa bangun subuh lagi πŸ˜€

See You!!!

Download Source Code

Silahkan download sourcecode tutorial ini –> disini <–

Membuat TableModel yang Dinamis


Kalo temen-temen anggota Jug-Bandung, pasti sudah tau ini, soalnya kemaren dah di bahas di milis Jug-Bandung, kalo blon tau silahkan kunjungi disini :

http://groups.google.co.id/group/jug-bandung/t/a6a2717fca2a32ed

Sekalian juga yang belum join, silahkan join πŸ˜€

Ceritanya gini, biasanya kalo kita bikin table, maka kita juga bikin tablemodel, misal tabel mahasiswa, maka kita bikin tablemodel mahasiswa, trus kalo tabel anggota, maka bikin tablemodel anggota juga, dan seterusnya πŸ˜€ Bayangkan jika di aplikasi kita ada 50 table, berarti kita biki 50 tablemodel juga 😦 capedeh…

Nah gimana caranya kita bikin 1 tablemodel, dan bisa digunakan oleh semuany? Baca lebih lanjut

[Video Tutorial Java Desktop] Membuat TableModel


header_icon Pada screencast pertama ini, saya akan bahas tentang β€œmembuat tablemodel”. Dimana kebanyakan programmer selalu membuat Model untuk JTable menggunakan DefaultTableModel. Padahal penggunaan DefaultTableModel kurang bagus jika kita akan membuat JTable yang menampilkan data yang spesifik, seperti misalnya JTable yang digunakan untuk menampilkan data Pegawai, Barang, atau data spesifik lainnya.

Baca lebih lanjut