Memuat Data Secara Otomatis Saat JComboBox di Klik


Peralatan yang diperlukan :

  1. Java Development Kit 1.6
  2. NetBeans IDE 6.8
  3. MySQL Server 5.1

Pernah berurusan dengan JComboBox? Pastinya 😀 Biasanya untuk masukan data yang sudah fix atau sudah ada dalam database, kita selalu menggunakan JComboBox, atau jika masukan data boleh lebih dari satu, kita biasa menggunakan JList.

Pada artikel kali ini saya akan membahas tentang bagaimana cara meload (memuat) data otomatis saat JComboBox diklik.Mungkin hal ini tidak akan berpengaruh jika datanya fix, seperti jenis kelamin misalnya, yang pilihannya hanya “laki-laki” dan “perempuan’, tapi bagaimana jika dengan kategori barang? atau yang sejenisnya yang bisa mengalami penambahan data 😀

Membuat Database

Anggap saja kita sekarang akan membuat JComboBox untuk meload kategori barang, jadi sebelumnya kita buat dulu database untuk ini dan juga tabel kategori :

mysql> create database combobox;
Query OK, 1 row affected (0.01 sec)

mysql> use combobox;
Database changed
mysql> create table kategori_barang(
    -> id integer primary key auto_increment,
    -> nama varchar(45) not null
    -> );
Query OK, 0 rows affected (0.00 sec)

Setelah membuat database dan tabel, saatnya mengisi datanya, misal kita isi datanya dengan beberapa kategori seperti yang ada terlihat pada kode dibawah ini :

mysql> insert into kategori_barang (nama) values
    -> ('Makanan'),
    -> ('Minuman'),
    -> ('Alat Tulis'),
    -> ('Sayuran');
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

dan hasilnya :

mysql> select * from kategori_barang;
+----+------------+
| id | nama       |
+----+------------+
|  1 | Makanan    |
|  2 | Minuman    |
|  3 | Alat Tulis |
|  4 | Sayuran    |
+----+------------+
4 rows in set (0.00 sec)

Sekarang selesai membuat database, tabel dan mengisi datanya.

Membuat Koneksi

Setelah membuat database, saatnya membuat koneksi dari program ke database. Pada artikel ini saya menggunakan JDBC untuk koneksi ke database nya. Caranya dengan membuat kelas ConnectionHelper, atau apapun terserah 😀

package khannedy.comboboxotomatis;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * @author Eko Kurniawan Khannedy
 */
public class DatabaseHelper {

    private static Connection connection;

    public static Connection getConnection() {
	if (connection == null) {
	    try {
		Class.forName("com.mysql.jdbc.Driver");
		connection = DriverManager.getConnection(
			"jdbc:mysql://localhost:3306/combobox",
			"username",
			"password");
	    } catch (Throwable t) {
	    }
	}
	return connection;
    }
}

Membuat Form

Sedernaha saja, kita langsung ke tujuan dari permasalahannya, yaitu meload otomatis data yang ada di database saat JComboBox di klik. Pertama buat JComboBox dengan nama comboKategori, atau apapu terserah 😀

Setelah itu tambahkan aksi ke JComboBox, tapi ingat!, aksinya bukan onMouseClick, tapi aksi untuk popup, caranya Klik Kanan pilih Events -> PopupMenu -> popupMenuWillBecomeVisible, dan setelah itu tambahkan kode dibawah ini untuk meload seluruh data kategori ke combobox :

    private void comboKategoriPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {

	// hapus seluruh data combobox
	comboKategori.removeAllItems();

	// load data dari database ke combobox
	Statement statement = null;
	ResultSet resultSet = null;
	try {
	    statement = DatabaseHelper.getConnection().createStatement();
	    resultSet = statement.executeQuery("select nama from kategori_barang");
	    while (resultSet.next()) {
		String kategori = resultSet.getString("nama");
		comboKategori.addItem(kategori);
	    }
	} catch (SQLException ex) {
	} finally {
	    try {
		if (resultSet != null) {
		    resultSet.close();
		}
	    } catch (SQLException ex) {
	    }
	    try {
		if (statement != null) {
		    statement.close();
		}
	    } catch (SQLException ex) {
	    }
	}
    }

Setelah itu jalankan… dan ow kok error?

run:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at khannedy.comboboxotomatis.DatabaseHelper.getConnection(DatabaseHelper.java:21)
        at khannedy.comboboxotomatis.Form.comboKategoriPopupMenuWillBecomeVisible(Form.java:89)
        at khannedy.comboboxotomatis.Form.access$000(Form.java:23)
        at khannedy.comboboxotomatis.Form$1.popupMenuWillBecomeVisible(Form.java:50)
        at javax.swing.JComboBox.firePopupMenuWillBecomeVisible(JComboBox.java:938)
        at javax.swing.plaf.basic.BasicComboPopup.firePopupMenuWillBecomeVisible(BasicComboPopup.java:330)
        at javax.swing.JPopupMenu.setVisible(JPopupMenu.java:730)
        at javax.swing.JPopupMenu.show(JPopupMenu.java:904)
        at javax.swing.plaf.basic.BasicComboPopup.show(BasicComboPopup.java:191)
        at javax.swing.plaf.basic.BasicComboPopup.togglePopup(BasicComboPopup.java:1110)
        at javax.swing.plaf.basic.BasicComboPopup$Handler.mousePressed(BasicComboPopup.java:807)
        at java.awt.Component.processMouseEvent(Component.java:6260)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4235)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        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)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at khannedy.comboboxotomatis.Form.comboKategoriPopupMenuWillBecomeVisible(Form.java:89)
        at khannedy.comboboxotomatis.Form.access$000(Form.java:23)
        at khannedy.comboboxotomatis.Form$1.popupMenuWillBecomeVisible(Form.java:50)
        at javax.swing.JComboBox.firePopupMenuWillBecomeVisible(JComboBox.java:938)
        at javax.swing.plaf.basic.BasicComboPopup.firePopupMenuWillBecomeVisible(BasicComboPopup.java:330)
        at javax.swing.JPopupMenu.setVisible(JPopupMenu.java:730)
        at javax.swing.JPopupMenu.show(JPopupMenu.java:904)
        at javax.swing.plaf.basic.BasicComboPopup.show(BasicComboPopup.java:191)
        at javax.swing.plaf.basic.BasicComboPopup.togglePopup(BasicComboPopup.java:1110)
        at javax.swing.plaf.basic.BasicComboPopup$Handler.mousePressed(BasicComboPopup.java:807)
        at java.awt.Component.processMouseEvent(Component.java:6260)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4235)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        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 SUCCESSFUL (total time: 7 seconds)

Tenang, tenang 😀 itu cuma driver MySQL nya belum di include ke Project, tinggal klik tambahkan MySQL Driver ke library project dan sekarang bisa dijalankan :

Sekarang coba tambahkan lagi datanya di database :

mysql> insert into kategori_barang (nama) values
    -> ('Data Baru Coy');
Query OK, 1 row affected (0.00 sec)

mysql> select * from kategori_barang;
+----+---------------+
| id | nama          |
+----+---------------+
|  1 | Makanan       |
|  2 | Minuman       |
|  3 | Alat Tulis    |
|  4 | Sayuran       |
|  5 | Data Baru Coy |
+----+---------------+
5 rows in set (0.00 sec)

Dan tanpa harus me restart aplikasi, otomatis data akan dimuat ulang saat popup menu JComboBox keluar :

Mudah bukan? 😀

Download SourceCode

Silahkan download sourcecode artikel ini –> disini <–

Iklan

kartu rencana studi


UNIKOM libur kuliah tinggal seminggu lagi, rencananya 1 minggu ini mo ke bekasih mo ke tempatnya mr.yayat, untuknya gw punya sodara di bekasi, jadi gak terlalu takut kalo da apa-apa disana :D, tapi setelah selesai minggu ini liburan, saatnya menghadapi mata kuliah yang sudah tertera di kartu rencana studi.

ini adalah mata kuliah yang gw ambil semester 6 ini di UNIKOM :

  • pendidikan kewarganegaraan

pendidikan kewarganegaraan? kenapa di IT harus belajar kayak gini y? mungkin supaya kita jadi warga negara yang baik 😀 , soalnya banyak orang IT yang gak jadi warga negara yang baik, termasuk gw 😀

  • riset operasional

Baca lebih lanjut

OSUM (tempat kumpul mahasiswa pecinta java)


ayo yang ngerasa masih anak kuliah (udah keluar juga gak papa, hehehe)

kemaren gw dapet pesen dari temen chating, tapi lupa namanya, dia ngasih tau kalo ada Friendster buat Java, namanya OSUM 😀

ini tempat kumpul anak2 mahasiswa pecinta java + netbeans + opensolaris, so gw mo ngajak kalian buat gabung 😀

ayo ramein jangan ampe kalah ama anak2 mahasiswa dari luar indonesia, karena ini komunitas bukan buat indonesia tapi seleruh dunia 😀

http://osum.sun.com/profile/echo_khannedy

http://osum.sun.com/

contoh penggunaan EecchhooFx


untuk memudahkan penggunaan EecchhooFx, sekarang gw kasih contoh-contoh penggunaan EecchhooFx untuk tiap-tiap class yang memiliki parent class Fx.

contoh yang gw buat ada sekitar 17 contoh, mudah-mudahan lo pada ngerti cara pake EecchhooFx kalo udah liat contoh penggunaanya 😀

Baca lebih lanjut

konfigurasi c++ di NetBeans IDE


netbeans logoakhirnya berhasil juga 😀

dari dulu saya bingung konfigurasi C++ di NetBeans, di website resminya NetBeans dikatakan bahwa untuk c++ di netbeans dapat menggunakan MinGW ato Cygwin, namun gak dijelasin step by stepnya, jadinya gw pusing!!!

tapi akhirnya sekarang berhasil juga 😀

jadi kalo ada yang bingung cara konfigurasi c++ di netbeans, tinggal baca  tutorial ini aja 😀

Baca lebih lanjut

tempat download wallpaper keren!!!


0c07164f180c0be1b1a7ec5c859077b7tadi iseng-iseng cari gambar wallpaper, eh nyasar di tempat download wallpaper yang keren-keren dan yang pastinya cool abizzz 😀

namanya wallpaper4.Us

website ini menawarkan gambar2 desain yang keren + unik, jadi yang liat-liat gak pada bosen 😀

Baca lebih lanjut

ayo berbagi dokumen dengan scribd


scribdsudah pada tahu kan tentang scribd ?

yup!!!

scribd merupakan situs penyedia layanan upload dokumen baik itu dokumen pdf, ms word sampe openoffice.

dengan scribd, kita akan mudah untuk mengupload dokumen dan mendownloadnya dimana saja, bahkan kita bisa mensharingkannya ke teman ato anggota scribd yang lain 😀

Baca lebih lanjut

rebutan bandwidth di kosan


desktop ini hari kedua gw pasang internet 😀

kebetulan yang pake internet ada 6 orang, dan yang satu gak bisa konek karena lan cardnya rusak, hahahah kacian deh dia 😀

biasa kalo anak kosan kan kalo dah pasang internet langsung download yang aneh – aneh, dari mulai A sampe Z didownload, heheheh 😀 dari yang haram sampe yang halal didownload hahahahha…. 😀

Baca lebih lanjut