Archive for the ‘Java’ Category

  • 10 TONIKUM ROHANI

    Date: 2008.11.03 | Category: Java | Response: 0

    Kemaren hari minggu aku pergi ke gereja… kemudian di dalam warta gereja ada sebuah artikel yang menarik :

    Sering kali kita merasa capek dan sepertinya kekuatan kita terkuras habis. Hal ini mungin sekali disebabkan oleh kegiatan kita yang begitu banyak yang nampaknya tidak pernah selesai-selesai. Satu pekerjaan selesai muncul lagi yang lain, bahkan belum lagi yang ini selesai, udah muncul lagi beberapa tugas baru. Semuanya membuat kita seperti orang yang sedang menyelam di dalam lautan yang luas, makin lama masuk makin dalam dan tidak muncul- muncul ke permukaan air untuk menghirup udara yang segar. Hal ini bisa mengakibatkan kematian, seperti kematia kreativitas, pikiran dan semangat. Sebenarnya, mau tidak mau kita harus meluangkan waktu untuk menghirup oksigen yang baru agar kekuatan kita pulih. Untuk itu, ada baiknya kita simak “10 Tonikum Rohani” di bawah ini, mudah-mudahan dengan menerapkan kiat-kiat di bawah ini, kita akan memperoleh kekuatan yang baru

    1. Awali setiap hari dengan doa, Doa akan memperkuat jiwamu, mencerahkan pikiranmu, mempertajam penglihatan dan membuat telingamu lebih peka
    2. Berhentilah kuatir, Kekuatiran akan membunuh kehidupan yang baru dimulai hari ini
    3. Kendalikan hawa nafsu, Terlalu bernafsu hanya akan menyumbat pikiran dan membuat kaki salah melangkah
    4. Terima keterbatasan. Kita tidak bisa mengerjakan semua perkara, kerjakan apa yang bisa dikerjakan. Kerjakan denga segenap kekuatan, seluruh pikiran dan sepenuh hati.
    5. Jangan Iri. Iri Hati hanya membuang waktu dan tenaga.
    6. Belajar mempercayai orang lain. Kerja sama akan mengurangi beban dan membuat hidup lebih semarak.
    7. Temukan hobimu dan lakukan itu. Melakukan hobi akan membuat syarafmu relax. Pergilah main badminton jika itu memang hobimu, macing, berkebun atau hiking.
    8. Bacalah satu buku dalam seminggu. Itu akan menyegarkan dan menggairahkan jiwamu kembali serta memperluas wawasan
    9. Luangkan waktu untuk sendirian. Bacalah firman Tuan. Itu akan mendatangkan kedamaian, ketenangan dan memberikan inspirasi baru, Ingat, Tuhan juga akan berbicara dan menuntun kita melalui pembacaan firmanNya
    10. Cobalah nikmati apa yang engkau sudah miliki dan bukan menghabiskan kekuatan untuk mencari apa yang belum dimiliki. Nikmati duduk di sofa di rumahmu dengan bercengkrama dengan keluargamu. Nikmati nonton VCD kisah-kisah Alkitab bersama keluargamu. Nikmatilah acara masak bersama keluarga. Jesus Love You

    :) artikel yang bagus

  • Sun Java Convention

    Date: 2008.04.18 | Category: Java | Response: 0


    Sun Java Convention

    • Classes and interfaces : Huruf pertama sebaiknya menggunakan huruf besar dan jika beberapa kata dihubungkan untuk membentuk nama, Huruf pertama dari inner word seharusnya huruf besar (format yang biasanya disebut “camelCase” ). Untuk Classes seharusnya menggunakan kata benda. Sebagai contoh :

    Hewan

    Mobil

    MejaBelajar

    Untuk interfaces, nama seharusnya menggunakan kata sifat seperti

    Runnable

    Serializable

    • Methods : Huruf pertama sebaiknya menggunakan huruf kecil kemudian menggunakan camelCase biasa. Sebagai tambahan, nama seharusnya menggunakan gabungan antara kata kerja-kata benda. Sebagai contoh :

    getKode

    setNama

    doProses

    • Variables : Seperti method, format camelCase, diawali dengan huruf kecil. Sun merekomendasikan nama yang singkat dan berarti. Contoh :

    lingkaran

    nmBarang

    kdBarang

    • Constants : Konstanta Java dibuat dengan marking variable static dan final. Mereka harus dinamai dengan menggunakan huruf besar dengan karakter underscore sebagai pemisah :

    MAX_HEIGHT

  • Java Bean Standard

    Date: 2008.04.18 | Category: Java | Response: 1


    JavaBeans adalah java classes yang memiliki properties. Untuk tujuan kita anggap properties sebagai provate instance variable. Karena mereka bersifat private, satu-satunya cara agar mereka dapat diakses dari luar dari class mereka dengan melalui method dalam class . Method yang digunakan untuk merubah nilai dari property disebut method setter dan method yang digunakan untuk mengambil nilai property disebut method getter.

    Aturan Penaman Java Bean Property

    • Jika Property bukan boolean, prefix method getter harus get. Sebagai contoh, getSize() adalah nama JavaBean getter yang valid untuk property yang bernama size, Anda tidak harus membuat variabel size meskipun beberapa IDE mengharapkannya. Nilai balik dari method getSize() terserah pada anda.

    • Jika Property merupakan tipe data boolean, prefix method getter bisa get atau is. Sebagai Contoh : getStopped() atau isStopped() keduanya adalah nama JavaBean yang valid untuk property boolean.

    • Prefix method setter harus set. Sebagai contoh : setSize() nama Java Bean yang valid untuk property size.

    • Untuk melengkapi nama dari method getter atau setter rubah huruf pertama dari nama property menjadi huruf besar kemudian tambahkan dengan prefix yang sesuai (get, is, atau set).

    • Method setter harus diberi public, dengan nilai balik void dan argument yang mewakili tipe property.

    • Method getter harus diberi public, tanpa argument dan mempunyai nilai balik yang cocok dengan tipe argument dari method setter untuk property tersebut.

    Java Beans spec mendukung events yang membuat componen untuk memberi tahu satu sama lain ketika sesuatu terjadi. Event model seringkali digunakan dalam aplikasi GUI ketika event seperti mouse click yang berhubungan dengan banyak obyek lain yang memiliki banyak hal yang dilakukan ketika mouse click terjadi. Obyek yang menerima informasi ketika event terjadi disebut listener

    Aturan Penamaan JavaBean Listener

    //masih bingung maksudnya apa

    • Nama method Listener digunakan untuk mendaftarkan suatu listener dengan eventSource yang harus menggunakan prefix add, diikuti dengan tipe Listener, Sebagai contoh, addActionListener() adalah nama yang valid untuk method yang event source mengijinkan yang lain untuk mendaftar untuk Action event

    • Nama method Listener untuk membuang listener harus menggunakan prefix remove diikuti dengan tipe listener (Menggunakan aturan yang sama dengan mendaftarkan method add)

    • Tipe listener harus ditambahkan atau dikurangi harus dilewatkan kedalam argument dalam method

    Contoh dari JavaBean method signature yang valid adalah

    public void setMyValue(int v)

    public int getMyValue()

    public boolean isMyStatus()

    public void addMyListener(MyListener m)

    pulic void removeMyListener(MyListener m)

    Contoh dari JavaBean method signature yang tidak valid adalah

    void setCustomerName(String s) // harus public

    public void modifyMyValue(int v) // tidak boleh menggunakan modify

    public void addXListener(MyListener m) // listener type mismatch

  • Identifier

    Date: 2008.04.18 | Category: Java | Response: 0


    Identifier adalah nama dari class, variables dan method

    Peraturan dasar Identifier :

    • Identifier harus dimulai dengan huruf, karakter mata uang($), atau menghubungkan karakter dengan menggunakan underscore (_). Identifier tidak boleh dimulai dengan angka

    • Setelah karakter pertama identifier dapat dikombinasikan dengan dengan huruf, karakter mata uang, karakter penghubung atau angka.

    • Pada prakteknya, jumlah karakter pada identifier tidak terbatas

    • Java Keyword tidak dapat digunakan sebagai suatu identifier

    • Identifier dalam Java bersifat case Sensitive, meja dan MEJA adalah dua identifier yang berbeda.

    Contoh dari identifier yang legal :

    int _a;

    int $b;

    int ____2_c;

    int _$;

    int ini_adalah_nama_identifier_yang_sangat_panjang;

     

    Berikut ini adalah contoh yang illegal :

    int :b;

    int -d;

    int e#;

    int .f;

    int 7g;

    Daftar lengkap dari Java Keyword

    abstract boolean break byte case catch

  • Aanwijzing Lapangan

    Date: 2008.03.31 | Category: Java | Response: 0

    Kemaren(29-03-2008) saya bersama rekan-rekan kerja berangkat ke Malang untuk survey lokasi… ini pertama kali saya survey lokasi untuk rel kereta api.. kesulitan pertama kali yang dialami adalah jalan rel tidak selalu berada dekat dengan jalan raya atau jalan yang bisa dilalui mobil sehingga terkadang kami harus turun dari mobil dan berjalan kaki beberapa puluh bahkan ratus meter, lewat sawah orang, lewat halaman rumah orang, menuruni lereng dsb.Setelah kami menemukan lokasi yang benar… saya senang jalan-jalan di Malang… kami berangkat dari Surabaya sekitar jam 03.30,kami tiba di Malang kurang lebih jam 6… saya tidak terlalu ingat jam berapa itu… pada waktu masih pagi senang sekali jalan2… tapi ketika sudah siang… walaupun itu kota Malang yang terletak di dataran tinggi… panasnya juga lumayan menyengat… untung saya mengenakan topi dan baju lengan panjang… tetapi sewaktu pulang leher bagian belakang saya sakit… tersengat oleh matahari… saya lupa menutupi bagian belakang leher saya… :P

    Setelah berjalan cukup lama saya menemukan bahwa pekerjaan yang kami jalankan ini memiliki tingkat kesulitan lumyan tingi menurut saya, karena ini adalah lintas aktif… lintas yang masih dipergunakan kereta api… sehingga jadwal kedatangan kereta harus benar-benar diperhatikan… jika tidak maka akan berakbat fatal… lalu banyak lengkung, saya sebetulnya tidak terlalu mengerti kenapa kok lengkung ini susah sekali dibuat tetapi jika mendengar teman saya dan pelatihan yang pernah diikuti, semua ada perhitungan sendiri, ketajaman lengkung, ketinggian sisi luar jika kita sembarangan membangun lengkung maka akan mengakibatkan spoor anjlok, kelihatannya sih cukup rumit dalam membangunnya…

    Setelah berjalan selama setengah hari lalu kamu menemui pengawas dinas, Pengawas Dinas pun memberi pengarahan singkat masalah lengkung dan kami bersama-sama berangkat untuk melihat lengkung rel yang akan kami kerjakan… lumayan banyak… yah… tapi itu semua kami selesaikan dalam waktu 1 hari… kami tiba kembali di Surabaya sekitas jam 19.30. .. Pengalaman baru ini cukup menyenangkan… :) sebelumnya saya tidak pernah merasakan berada di dekat spoor yang melintas… Duh… berbahaya sekali… kalau tersenggol mungkin badan saya hancur… tapi untunglah saya bekerja dengan orang yang berpengalaman… dia sangat mengerti kapan saat yang tepat untuk menghindar… :)

  • Bulan Kedua di perusahaan konstruksi

    Date: 2008.03.17 | Category: Java | Response: 0

           Bulan kedua bekerja di perusahaan konstruksi ini penuh dengan lembur … :) bulan pertama dulu pagi nya aku masih bekerja di STIKOM baru malamnya aku kerja di perusahaan konstruksi ini, baru bulan ini masuk pagi…. ini adalah masa persiapan lelang… mempersiapkan dokumen administrasi dan penawaran… karyawan disini yang mengurusi masalah tersebut hanya ada 3 orang termasuk saya… sebetulnya pekerjaannya tidak terlalu sulit sehingga harus di lembur tapi kerjaannya ada banyak sekali… sehingga ya terpaksa lembur… habis kertas kurang lebih 8 – 10 rim, sampai 2 printer yang ada disini kembali 2-3 kali ke tokonya untuk memperbaiki modifikasinya… ya memang pagi siang malam mereka kerja terus sih… :P sampai akhirnya beli printer lagi baru… printer 3 in 1 : print, scan and copy, praktis… :)

    Perusahaan tempat saya bekerja adalah perusahaan berkembang… administrasinya masih kacau… selama ini administrasi sebagian besar diurus owner sendiri… sehingga berantakan karena dia banyak sekali dikerjakan… baru setelah teman saya masuk bulan Desember yang lalu, urusan administrasi mulai tertata perlahan-lahan… tapi ada permasalahan… teman saya tidak bisa mengoperasikan komputer… sehingga baru setelah saya masuk baru mulai terkomputerisasi dan lebih terorganisir… sebetulnya sudah ada karyawan yang bisa mengoperasikan komputer di sini.. tetapi dia masih butuh bimbingan dan tidak bisa dilepas sendirian…asalkan kita mengarahkannya dengan benar, dia bisa bekerja dengan baik… yah… untung masih ada dia… kalau tidak aku benar-benar kewalahan…

    Saya belajar banyak mengenai cara mengajukan penawaran ke pemerintah… lalu cara pelelangan itu seperti apa… :) dunia yang baru bagiku…. dulu yang sehari-hari aku mengajar, menghadapi anak-anak lalu buat program… sekarang saya menangani perusahaan konstruksi… memang pengalaman sebagai seorang guru sangatlah bermanfaat saat ini… karena di sini juga membimbing beberapa orang untuk belajar komputer… kalau mereka bisa komputer kan pekerjaan saya akan lebih ringan :) jadi kan tidak mengandalkan saya seorang….

    Bos juga cukup perhatian… terkadang kalau kami lagi lembur dia beli jajan atau suplemen untuk kami… tetapi saya menyadari dia ada banyak pekerjaan lain di luar..sehingga terkadang dia tidak bisa memperhatikan kami… hanya mengontrol dari jarak jauh… orangnya sabar… :)   walau kata orang aku adalah orang yang sabar.. tetapi bosku ini lebih sabar daripada aku… saya terkadang melakukan kesalahan… tetapi dia tidak marah… malah membantu… saya senang dengan tipe orang seperti ini… tidak serta merta langsung marah… kalau dia langsung marah mungkin aku akan langsung mengundurkan diri… karena kita sudah bekerja pagi siang malam buat dia… kadang saya capek dan ngantuk sehingga salah ketik atau tidak teliti dalam bekerja…. tapi dia memaklumi… pernah saya dengan bos sedang membuat Rencana Anggaran Biaya, selama lembur saya kurang tidur… lalu ketika di sebelahnya saya kepala saya terantuk-antuk karena sudah ngantuk berat… yang dia lakukan bukan memarahi atau cuci muka tetapi menyuruh saya tidur.. :) orang yang pengertian… senang aku… :) walau setelah bangun ada teman yang menertawakan saya… tapi saya cuek aja… karena memang saya sudah capek sekali… sudah tak bisa berfikir….

    Teman kerja… yah.. tidak ada seorang pun yang sempurna… tapi mereka orang yang baik… dan berusaha semampunya untuk bekerja… saya menghargai itu… kami bekerja sama-sama sampai pagi…. saling menyemangati satu sama yang lain… dalam kondisi capek kami masih bisa tertawa… yah memang terkadang kami pun diliputi emosi ketika apa yang kami kerjakan itu ada yang salah sehingga harus membongkar ulang pekerjaan… tapi semua berjalan dengan baik…. Bekerja dengan mereka cukup menyenangkan :)

    Saya cerita tentang lembur saya kepada beberapa teman… ada yang menanggapi : “Dibayar berapa Fred, kamu kok mau lembur terus – menerus?” aku hanya tersenyum… :) sebab kalau dihitung secara materi… gaji ku kecil… yah lebih besar dari tempat lama sih… tapi selisihnya tidak terlalu banyak…. bulan-bulan awal saya menunjukkan kepada bos apa yang bisa saya lakukan… saya tidak terlalu peduli dengan gaji… yang terpenting orangnya bisa menghargai pekerjaan saya… di tempat kerja yang baru ini ada seorang rekan kerja senior yang selalu berkata “Tunjukkan loyalitasmu dulu… bos akan gaji kamu sesuai dengan loyalitasmu itu…” kata-kata itu membuat saya bersemangat… :) di tempat kerja yang lama… loyalitas kami tidak diperhatikan… saya sedih :( pimpinan tidak tahu bagaimana kerja kami… tidak pernah tahu bagaimanakah beban kerja kami…. kami dulu tidak diperhatikan… saya dulu bertahan hanya karena saya cinta dengan pekerjaan… bukan cinta dengan perusahaan…  saya senang mengajar :) yah… setelah beberapa bulan lagi baru bicara lagi dengan bos masalah gaji… kan saya sudah menunjukkan apa yang saya bisa… terserah dia bagaimana… kalau dia bisa menghargai hasil kerja saya ya saya tetap tinggal… tapi kalau tidak sesuai ya saya cari perusahaan lain yang bisa hargai saya:)

    Secara keseluruhan saya senang bekerja di tempat ini :)   lingkungan bekerja yang menyenangkan… bulan depan saya akan mulai ditempatkan di lapangan… tidak tahu lagi bulan depan akan seperti apa… yah… dijalani saja… :) Tuhan pasti bantu…

  • JExcelApi

    Date: 2008.02.23 | Category: Java | Response: 2

    Beberapa minggu lalu ada postingan di milis jug-indonesia yang bertanya bagaimana cara membuat report excel, lalu ada beberapa orang yang menaggapi dan menjawab jExcel, penasaran lalu aku coba buat laporan menggunakan jExcel karena biasanya pakai POI atau jasper(jasper untuk export laporan dalam bentuk excel juga menggunakan POI) ternyata memang cukup mudah :)

    Berikut ini adalah contoh program sederhana untuk membuat laporan excel menggunakan jExcel :

    package jExcel;

    import java.io.File;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import jxl.write.WritableWorkbook;
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.Number;
    import jxl.write.WritableSheet;
    import jxl.write.WriteException;
    /**
    *
    * @author freddy
    */
    public class laporanPertama {
    public static void main(String[] args) {
    {
    //Membuat workbook baru dengan nama laporan.xls
    WritableWorkbook workBook = Workbook.createWorkbook(new File("laporan.xls"));

    //Membuat sheet dengan nama Sheet pertama
    WritableSheet sheet = workBook.createSheet("Sheet pertama ",0);

    //Membuat label dengan text No pada cell A1
    Label label = new Label(0,0,"No");
    sheet.addCell(label);

    //Membuat label dengan text Nama pada cell A2
    label = new Label(1,0,"Nama");
    sheet.addCell(label);

    //Membuat number dengan angka 1 pada cell B1
    Number number = new Number(0,1,1);
    sheet.addCell(number);

    //Membuat label dengan text Freddy pada cell B2
    label = new Label(1,1,"Freddy");
    sheet.addCell(label);

    //Semua sheet dan cell telah ditambahkan kini saatnya untuk
    //menuliskan ke workBook
    workBook.write();
    workBook.close();
    } catch (WriteException ex) {
    Logger.getLogger(laporanPertama.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
    Logger.getLogger(laporanPertama.class.getName()).log(Level.SEVERE, null, ex);
    }
    }
    }

    Setelah code tersebut dijalankan akan secara otomatis terbuat laporan.xls pada direktori tempat anda menjalankan program ini

    referensi :
    JExcelApi

  • Amarah

    Date: 2008.01.26 | Category: Java | Response: 0

    Terkadang ada beberapa saat saya mengalami amarah yang sangat hebat beberapa tahun ini jikalau saya marah terhadap seseorang saya selalu memendamnya di hati sampai suatu saat amarah itu meledak-ledak, saya bertanya dengan Rm Cun Cun bagaimana mengatasi hal itu, dia berkata jika seseorang dilanda suatu kemarahan maka amarah tersebut harus disalurkan baik melalui aktivitas fisik atau hobi, atau bisa juga amarah itu digunakan sebagai energi yang membawa kita ke level yang lebih tinggi seperti layaknya energi yang membuat roket bisa terbang ke atas tetapi jika masih baru belajar, bisa-bisa roket tersebut tidak naik ke atas tetapi roket itu berputar-putar kesana kemari tanpa tujuan yang jelas, atau bisa juga dengan membicarakannya dengan orang-orang dekat, ketika saya memiliki masalah saya tidak bisa membicarakan semua masalah saya dengan orang-orang dekat saya karena terkadang mereka tidak bisa memberikan saran yang tepat dan seringkali malah saya menjadi semakin kesal dengan pendapatnya karena menurut saya pendapatnya itu kurang bijak atau kurang obyektif, saya membutuhkan teman bicara yang umurnya jauh di atas saya tetapi hal ini agak susah saya dapatkan karena kesibukan saya sekarang kemudian Romo bilang membaca buku juga bisa membantu, saya senang sekali ketika dia bilang hal itu karena beberapa minggu ini saya memulihkan hidup saya dengan membaca buku Purpose Driven karangan Rick Warren, tetapi memang seperti kita memilih seorang teman memilih buku yang tepat untuk kita juga susah-susah gampang, kebetulan saya menemukan buku yang tepat sehingga bisa memulihkan kehidupan saya perlahan-lahan tapi pasti, satu hal lagi yang Romo bilang adalah kita harus belajar menerima amarah kita dan  harus bisa mengambil hikmah dari kejadian yang membuat kita marah, Cara itu bisa digunakan untuk mengurangi amarah atau memperoleh suatu pemahaman baru,kata beliau jika kita masih bisa menertawakan diri kita sendiri maka kita masih jauh dari depresi :)

  • Tujuan 2008

    Date: 2007.12.18 | Category: Java | Response: 0

    Selama hidup ini aku jarang sekali memiliki tujuan… hanya melakukan apa yang orang lain inginkan… sekolah di suruh mama :lol lalu kerja, kepepet karena tidak punya uang:P coba kalau duduk-duduk bisa dapat uang aku pasti tidak bekerja :lol ya semua orang sama…. mulai tahun 2005 itu juga… sudah pernah bicara sama teman kerja di Tropodo bahwa tahun 2006 aku akan ambil sertifikasi… tapi ya sampai sekarang juga tidak punya sertifikasi… mau belajar… tapi gimana ya? lihat preparation kit yang tebal aja sudah malas :P mungkin karena kesibukan selama ini… jadi ketika tidak ada kerjaan bukannya belajar untuk sertifikasi tapi malah main :P karena kadang kerja/belajar terus capek :P cuma kadang kalau sudah bermain game tu tidak ada habisnya… bisa berjam-jam, tidak terasa… kalau belajar 1 jam terasa… :lol kecuali kalau belajar sesuatu yang baru dan mengasyikkan… pernah 3 jam duduk di depan komputer tu tidak terasa… terasanya tu kok sudah mulai ngantuk ya… beberapa bulan ini ada beberapa perubahan yang terjadi di STIKOM aku bingung juga… rasanya semenjak Pak Jangkung jadi ketua… saya lihat di Kamar mandi mulai bertebaran slogan, kata-kata motivasi diganti-ganti entah selama berapa periode sekali… aku lihat itu bagus juga… mungkin harus di contoh… karena saat ini sudah tidak ada orang yang memotivasiku seperti dulu.. beberapa orang yang bisa memotivasiku dalam hidup perlahan-lahan kutinggalkan semua, karena kesibukan diriku… sekarang mulai terasa… bekerja itu rasanya malas sekali… lebih suka bermain… :lol mulai tahun 2008 aku ada beberapa keinginan dan tujuan, nanti akan ku print dan kutempel di dinding kamar biar ingat terus :lol

    1. Sertifikasi LPIC-1
    Beberapa hari yang lalu ada teman yang minta kesediaanku untuk gabung dalam proyek software yang ia kerjakan… dan ia meminta semua ijasah dan sertifikasi yang aku miliki, disana aku melihat pentingnya sertifikasi yang kita miliki, Beberapa hari lalu juga dengar cerita bahwa Pak Budi mantan atasan di sini mendapat sertifikasi CISA bulan agustus lalu sekarang keluar dari STIKOM dan bekerja jadi auditor sistem informasi.
    LPIC-1, sertifikasi untuk Linux, karena di tempat kerja mulai menggunakan kurikulum open source berbasis Linux, exam 101 target bulan Februari, exam 102 target bulan Agustus.

    2. Beli Sepeda
    Akhir-akhir ini badanku semakin lama semakin gemuk… :( karena sudah tidak pernah olahraga lalu makan terus, pingin beli sepeda buat kerja… dan juga sepeda motor semakin sering bermasalah… habis uang banyak untuk perbaiki… ingin beli yang baru tapi masih belum punya uang… target Bulan Februari bisa beli sepeda…

    3. Beli sepeda motor
    Sepeda motor sekarang sering bermasalah… maklum mocin… ini sebetulnya sudah bersyukur masih ada sepeda motor… tapi terkadang kalau ada masalah keluar banyak uang untuk ganti onderdil.. Target Bulan Desember baru bisa beli sepeda motor…

    Biaya :
    LPIC-1 = 150$ -> Rp 1.500.000
    Sepeda = Rp 1.000.000
    Sepeda motor = Rp 10.000.000
    Total Biaya = Rp 12.500.000

    Nah ini target ke 4 :lol

    4. Kumpulkan uang minimal Rp 12.500.000
    Bulan Februari kumpulkan uang Rp 1.500.000
    Bulan Agustus kumpulkan uang Rp 1.000.000
    Bulan Desember kumpulkan uang Rp 10.000.000

    5. Buat product software
    Kerja keras selama 1 tahun ini :) bulan Januari – Februari launching… semoga bisa laku… sekarang sedang melakukan persiapan… dan membenahi beberapa hal… selama 1 tahun belajar dari Ce Djing-djing… pusing belajar Akuntansi.. sampai sekarang juga rada bingung… :lol tapi untuk pertama kali aku akan jual modul penjualan saja… karena masih belum stabil.. sedikit-sedikit aja :D alon-alon asal kelakon

    6. Selesaikan GIS
    Proyek GIS yang ndak selesai-selesai… lha gimana lagi wong tidak dikerjakan:P dulu tidak ada petanya setelah ada petanya bingung banyak hal jadi tidak dikerjakan sampai sekarang… lalu memang waktu itu ada proyek lain yang uangnya lebih kelihatan :)

    Semoga tujuan ini bisa tercapai…

    Tuhan adalah kekuatanku :)

  • JCombobox filtering

    Date: 2007.12.01 | Category: Java | Response: 9

            Beberapa bulan lalu ketika mulai mengerjakan Sistem Informasi Akuntansi buat client menggunakan Swing, ada beberapa kesulitan… salah satunya membuat filtering untuk combo box… baru beberapa minggu ini ada waktu luang cukup lumayan… jadi sempat explore lagi lebih lanjut… dan untungnya di tempat kerja yang baru ni bisa internetan 6 x 10 jam :D hari minggu tidur di rumah… sehari 10 jam aja… sisanya pulang ke kost… kerjain proyek… kalau internetan terus kapan kerjanya:P

    Pertama saya surfing di internet kata kunci nya “filtering JCombobox” lalu keluar listnya… coba klik satu persatu… lalu ketemu glazed list yang dulu Ifnu(moderator netbenas Indonesia) pernah buat tutorialnya.. kemudian baca-baca terus dan tidak mengerti :P lalu coba lihat video tutorial.. karena streaming agak putus-putus maka ku putuskan untuk mendownloadnya… karena aku ni agak rakus maka kudownload semua video tutorial, karena lumayan banyak jadi baru selesai besoknya… besoknya aku cek… dan ternyata… cuma keluar suaranya :( ndak ada gambarnya… :( ( akhirnya aku putuskan untuk bertanya di milis, siapa tahu ada yang pernah mengalami hal yang sama…  aku bertanya seperti ini :

    “Ada yang pernah buat aplikasi pakai combo box filtering? aku coba cari-cari di google… kemudian baca-baca… katanya pakai glazed list bisa… tapi yang di tutorial glazed list contohnya hanya di JTable… ada yang bisa bantu? atau mungkin ada solusi yang lain?”

    Kemudian Ifnu berbaik hati membalas :

    “Gw blom pernah bikin sih, kalo filtering intinya kan filtering data dulu baru kemudian ditampilkan dalam JComboBox, nah yang bisa dilakukan yha membuat model untuk JComboBox ini

    http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html

    Misalnya kita punya data yang diletakkan dalam collection, kita bisa memfilter dengan kode yang sanagt sederhana, pertama yha dengan cara melakukan iterasi terhadap collection tersebut kemudian mengetes satu-satu apakah elemen yang sekarang ini masuk dalam kriteria filter atau tidak

    Vector<Data> datas = new Vector<Data>();

    //memasukkan data dari database misalnya :D

    Vector<Data> filteredData = new Vector<Data>();

    for(Data d : datas){
    if(condition){ //kondisi yang harus dipenuhi object data untuk masuk dalam filter atau tidak
    filteredData.add(d);
    }
    }

    kemudian buat lagi Object DefaultComboBoxModel

    DefaultComboBoxModel model = new DefaultComboBoxModel(filteredData);
    jComboBox1.setModel(model);

    nah kira2 begitu cara yang paling gampang untuk membuat filter di JComboBox, kalau mau cara yang lebih elegan bisa menggunakan method filter dari class CollectionUtil dari Apache common collection

    http://commons.apache.org/collections

    atau coba ikutin tutorial ini :

    http://www.javaworld.com/javaworld/jw-10-2004/jw-1018-filter.html

    Atau bisa juga sih dengan cara yang lain: gunakan query untuk melakukan filter, kemudian hasil filternya diubah ke collection of object menggunakan Vector trus dibuat comboboxmodel trus dimasukin tuh model ke dalam JComboBox seperti cara diatas, bedanya yha yang memfilter itu query di database :D

    Kalo gw sih karena pake Hibernate jadi untuk filtering tinggal menggunakan HQL saja seterusnya sama saja metodenya dengan diatas :D

    Nah… setelah pulang kerja kucoba… ada beberapa kesulitan… yang pertama bingung… cara mendeteksi event waktu saya tulis kata dalam editor JComboBox itu apa ya? karena waktu lihat-lihat dalam JComboBox ada KeyListener() tapi aku test tidak terjadi apa pun.. bingung… tapi akirnya kuputuskan dicoba dulu aja pakai actionListener… setelah mulai jalan… kesulitan kedua adalah cara filternya ini gimana? kalau seperti yang diajarkan Ifnu, aku bingung menentukan condition-nya… inginku kalau ada orang ketik “a” maka dia akan memfilter semua yang berawalan “a” lalu kalau setelah itu dia ketik “n” maka akan keluar semua yang berawalan “an”. Setelah diam dan kupikir-pikir beberapa saat… kepalaku jadi agak pusing…:P lalu aku teringat ketika main-main JTable kemaren… ada fitur baru dalam Java Mustang… filtering table… lalu kucoba bingkar source code dan ketemu… ternyata itu bermain reg ex… lalu kucoba dan jadi :) tapi ketemu lagi kesulitan ketiga… yaitu dia memfilter 2 kali, maksudnya ketika kita ketik “a” dia akan memfilter semua kata yang ada huruf “a” setelah itu secara otomatis dia menampilkan index[0] nah itu difilter lagi jadi kalau index[0] = “andi” maka list dalam JComboBox jadi muncul hanya kata “Andi” padahal ada beberapa kata lain juga mengandung huruf “a” :( ( bingung… lakukan beberapa pengetesan… ternyata memang sebelum kulakukan filter, itu pun memang di jalankan sebanyak 2 kali ketika kita menekan enter pada JComboBox… bingung… akhirnya coba-coba ketemu method JComboBox.getEditor().addActionListener() dan berhasil :D senang sekali waktu berhasil.. tapi masih belum sempurna… akhirnya ketemu list code di bawah ini :

    /*
    * EditComboBox.java
    *
    * Created on November 29, 2007, 2:51 AM
    *
    * author freddy
    */

    package swing;

    import java.awt.*;
    import java.util.Vector;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import javax.swing.*;
    import java.awt.event.*;
    public class EditComboBox {
    public static void main(String args[]) {
    Runnable runner = new Runnable() {
    public void run() {
    final String labels[] = {“Ali”, “Andi”, “Bernard”, “Baba”,
    “Cha-cha”, “Charlie”, “Deni”, “Dono”, “Edi”,
    “Esti”};
    JFrame frame = new JFrame(“Editable JComboBox”);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final JComboBox comboBox = new JComboBox(labels);
    comboBox.setMaximumRowCount(5);
    comboBox.setEditable(true);
    frame.add(comboBox, BorderLayout.NORTH);
    ActionListener actionListener = new ActionListener() {
    public void actionPerformed(ActionEvent actionEvent) {

    DefaultComboBoxModel model = new DefaultComboBoxModel();
    Pattern p = Pattern.compile(comboBox.getEditor().getItem().toString());
    ComboBoxEditor editor = comboBox.getEditor();
    Matcher m;
    for (int i=0;i<labels.length;i++) {
    m = p.matcher(labels[i]);
    if(m.find()) {
    model.addElement(labels[i]);
    }
    }
    comboBox.setModel(model);
    }
    };
    comboBox.getEditor().addActionListener(actionListener);

    frame.setSize(300, 200);
    frame.setVisible(true);
    }
    };
    EventQueue.invokeLater(runner);
    }
    }

    Lalu aku post lagi di milis.. nunggu tanggapan dari yang lain… tapi tidak ada tanggapan lalu aku surfing lagi di internet coba lihat-lihat lagi siapa tahu ada yang kelewatan dan Puji Tuhan.. ketemu artikel yang bagus… lalu kucoba-coba… berhasil :) ini listing codenya…

    /*
    * AutoCompletion.java
    *
    * Created on November 29, 2007, 8:06 AM
    *
    */
    import java.awt.event.*;
    import java.beans.PropertyChangeEvent;
    import java.beans.PropertyChangeListener;
    import javax.swing.*;
    import javax.swing.text.*;

    /* This work is hereby released into the Public Domain.
    * To view a copy of the public domain dedication, visit
    * http://creativecommons.org/licenses/publicdomain/
    */
    public class AutoCompletion extends PlainDocument {
    JComboBox comboBox;
    ComboBoxModel model;
    JTextComponent editor;
    // flag to indicate if setSelectedItem has been called
    // subsequent calls to remove/insertString should be ignored
    boolean selecting=false;
    boolean hidePopupOnFocusLoss;
    boolean hitBackspace=false;
    boolean hitBackspaceOnSelection;

    KeyListener editorKeyListener;
    FocusListener editorFocusListener;

    public AutoCompletion(final JComboBox comboBox) {
    this.comboBox = comboBox;
    model = comboBox.getModel();
    comboBox.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!selecting) highlightCompletedText(0);
    }
    });
    comboBox.addPropertyChangeListener(new PropertyChangeListener() {
    public void propertyChange(PropertyChangeEvent e) {
    if (e.getPropertyName().equals(“editor”)) configureEditor((ComboBoxEditor) e.getNewValue());
    if (e.getPropertyName().equals(“model”)) model = (ComboBoxModel) e.getNewValue();
    }
    });
    editorKeyListener = new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
    if (comboBox.isDisplayable()) comboBox.setPopupVisible(true);
    hitBackspace=false;
    switch (e.getKeyCode()) {
    // determine if the pressed key is backspace (needed by the remove method)
    case KeyEvent.VK_BACK_SPACE : hitBackspace=true;
    hitBackspaceOnSelection=editor.getSelectionStart()!=editor.getSelectionEnd();
    break;
    // ignore delete key
    case KeyEvent.VK_DELETE : e.consume();
    comboBox.getToolkit().beep();
    break;
    }
    }
    };
    // Bug 5100422 on Java 1.5: Editable JComboBox won’t hide popup when tabbing out
    hidePopupOnFocusLoss=System.getProperty(“java.version”).startsWith(“1.5″);
    // Highlight whole text when gaining focus
    editorFocusListener = new FocusAdapter() {
    public void focusGained(FocusEvent e) {
    highlightCompletedText(0);
    }
    public void focusLost(FocusEvent e) {
    // Workaround for Bug 5100422 – Hide Popup on focus loss
    if (hidePopupOnFocusLoss) comboBox.setPopupVisible(false);
    }
    };
    configureEditor(comboBox.getEditor());
    // Handle initially selected object
    Object selected = comboBox.getSelectedItem();
    if (selected!=null) setText(selected.toString());
    highlightCompletedText(0);
    }

    public static void enable(JComboBox comboBox) {
    // has to be editable
    comboBox.setEditable(true);
    // change the editor’s document
    new AutoCompletion(comboBox);
    }

    void configureEditor(ComboBoxEditor newEditor) {
    if (editor != null) {
    editor.removeKeyListener(editorKeyListener);
    editor.removeFocusListener(editorFocusListener);
    }

    if (newEditor != null) {
    editor = (JTextComponent) newEditor.getEditorComponent();
    editor.addKeyListener(editorKeyListener);
    editor.addFocusListener(editorFocusListener);
    editor.setDocument(this);
    }
    }

    public void remove(int offs, int len) throws BadLocationException {
    // return immediately when selecting an item
    if (selecting) return;
    if (hitBackspace) {
    // user hit backspace => move the selection backwards
    // old item keeps being selected
    if (offs>0) {
    if (hitBackspaceOnSelection) offs–;
    } else {
    // User hit backspace with the cursor positioned on the start => beep
    comboBox.getToolkit().beep(); // when available use: UIManager.getLookAndFeel().provideErrorFeedback(comboBox);
    }
    highlightCompletedText(offs);
    } else {
    super.remove(offs, len);
    }
    }

    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
    // return immediately when selecting an item
    if (selecting) return;
    // insert the string into the document
    super.insertString(offs, str, a);
    // lookup and select a matching item
    Object item = lookupItem(getText(0, getLength()));
    if (item != null) {
    setSelectedItem(item);
    } else {
    // keep old item selected if there is no match
    item = comboBox.getSelectedItem();
    // imitate no insert (later on offs will be incremented by str.length(): selection won’t move forward)
    offs = offs-str.length();
    // provide feedback to the user that his input has been received but can not be accepted
    comboBox.getToolkit().beep(); // when available use: UIManager.getLookAndFeel().provideErrorFeedback(comboBox);
    }
    setText(item.toString());
    // select the completed part
    highlightCompletedText(offs+str.length());
    }

    private void setText(String text) {
    try {
    // remove all text and insert the completed string
    super.remove(0, getLength());
    super.insertString(0, text, null);
    } catch (BadLocationException e) {
    throw new RuntimeException(e.toString());
    }
    }

    private void highlightCompletedText(int start) {
    editor.setCaretPosition(getLength());
    editor.moveCaretPosition(start);
    }

    private void setSelectedItem(Object item) {
    selecting = true;
    model.setSelectedItem(item);
    selecting = false;
    }

    private Object lookupItem(String pattern) {
    Object selectedItem = model.getSelectedItem();
    // only search for a different item if the currently selected does not match
    if (selectedItem != null && startsWithIgnoreCase(selectedItem.toString(), pattern)) {
    return selectedItem;
    } else {
    // iterate over all items
    for (int i=0, n=model.getSize(); i < n; i++) {
    Object currentItem = model.getElementAt(i);
    // current item starts with the pattern?
    if (currentItem != null && startsWithIgnoreCase(currentItem.toString(), pattern)) {
    return currentItem;
    }
    }
    }
    // no item starts with the pattern => return null
    return null;
    }

    // checks if str1 starts with str2 – ignores case
    private boolean startsWithIgnoreCase(String str1, String str2) {
    return str1.toUpperCase().startsWith(str2.toUpperCase());
    }

    private static void createAndShowGUI() {
    // the combo box (add/modify items if you like to)
    final JComboBox comboBox = new JComboBox(new Object[] {“Ester”, “Jordi”, “Jordina”, “Jorge”, “Sergi”});
    enable(comboBox);

    // create and show a window containing the combo box
    final JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(3);
    frame.getContentPane().add(comboBox);
    frame.pack(); frame.setVisible(true);
    }

    public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    createAndShowGUI();
    }
    });
    }
    }

    lalu untuk penggunaan di JTable ada tambahan class di bawah ini :

    /*
    * ComboBoxCellEditor.java
    *
    * Created on November 29, 2007, 10:04 PM
    *
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    */

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.Serializable;
    import javax.swing.*;
    import javax.swing.AbstractCellEditor;
    import javax.swing.JComboBox;
    import javax.swing.table.TableCellEditor;

    public class ComboBoxCellEditor extends AbstractCellEditor implements ActionListener, TableCellEditor, Serializable {

    private JComboBox comboBox;

    public ComboBoxCellEditor(JComboBox comboBox) {
    this.comboBox = comboBox;
    this.comboBox.putClientProperty(“JComboBox.isTableCellEditor”, Boolean.TRUE);
    // hitting enter in the combo box should stop cellediting (see below)
    this.comboBox.addActionListener(this);
    // remove the editor’s border – the cell itself already has one
    ((JComponent) comboBox.getEditor().getEditorComponent()).setBorder(null);
    }

    private void setValue(Object value) {
    comboBox.setSelectedItem(value);
    }

    // Implementing ActionListener
    public void actionPerformed(java.awt.event.ActionEvent e) {
    // Selecting an item results in an actioncommand “comboBoxChanged”.
    // We should ignore these ones.

    // Hitting enter results in an actioncommand “comboBoxEdited”
    if(e.getActionCommand().equals(“comboBoxEdited”)) {
    stopCellEditing();
    }
    }

    // Implementing CellEditor
    public Object getCellEditorValue() {
    return comboBox.getSelectedItem();
    }

    public boolean stopCellEditing() {
    if (comboBox.isEditable()) {
    // Notify the combo box that editing has stopped (e.g. User pressed F2)
    comboBox.actionPerformed(new ActionEvent(this, 0, “”));
    }
    fireEditingStopped();
    return true;
    }

    // Implementing TableCellEditor
    public java.awt.Component getTableCellEditorComponent(javax.swing.JTable table, Object value, boolean isSelected, int row, int column) {
    setValue(value);
    return comboBox;
    }

    }

    lalu untuk penggunaannya hanya tambahkan di dalam JTable yang anda buat dengan

    autoCompletion.enable(JComboBox);
    tableColumn.setCellEditor(new ComboBoxCellEditor(JComboBox));

    referensi :

    • http://www.orbital-computer.de/JComboBox/