Java Swing, Animasi Loading dan Background Process

Dalam pembuatan aplikasi, salah satu tips UI/UX yang baik adalah membuat animasi loading pada saat proses load/memuat data, khususnya ketika memuat data yang lumayan besar dari database atau resource lain. Ini dimaksudkan supaya memberikan informasi kepada end-user kalau aplikasi sedang me-load data yang prosesnya berjalan di background. Jangan sampai user mengira kalau aplikasi hang atau kesurupan, hehe.

Kali ini saya akan mencoba membuat simulasi animasi loading pada Java Swing. Untuk ini kita membutuhkan resource data yang cukup besar, file gambar untuk animasi loading-nya, dan sedikit bantuan dari class SwingWorker.

Untuk resource data, saya gunakan dataset free dari MySQL, database employees. Silakan googling.

Untuk gambar animasi loading, saya generate dari http://www.ajaxload.info/.

Untuk get data silahkan buat sendiri, crud database seperti biasanya. Data dari table employees ada sekitar 300.000 record.

Kita skip langsung ke coding di Frame-nya untuk menampilkan aksi loading. Pertama deklarasi object JDialog untuk jendela animasinya.

Buat method createDialogLoading untuk aktivasi dialog animasi.

Lalu di component trigger-nya tambahkan action berikut.

Untuk kode lengkapnya bisa dilihat di repo yang saya buat di Github. Sementara hanya bisa untuk action Limit Data.

Sekian.

 

Java Swing: Underline JLabel

Assalamualaikum.

Singkat saja, saya sedang mencari cara bagaimana membuat text bergaris bawah atau underline pada JLabel. Dan lagi-lagi StackOverflow save my day.

Cukup gunakan method setText() dan isi value-nya, bungkus dengan tag html dan tag u, seperti ini kira-kira:

Tutorial Laporan Master-Detail Di Jasperreport

Assalamualaikum.

Membuat laporan atau reporting sepertinya sudah menjadi sebuah keharusan dalam development aplikasi bisnis, misalnya saja aplikasi pos atau lebih yang lebih sederhana lagi, aplikasi kasir. Di dalam laporan ini data yang harus ditampilkan bisa jadi kompleks, sebuah data master dengan detail di dalamnya, atau bisa juga disebut laporan master-detail. Contohnya, aplikasi ingin mencetak faktur sebuah transaksi penjualan, dimana faktur tersebut menampilkan informasi master penjualan seperti: nomor atau ID transaksi, tanggal transaksi, jenis transaksi, user pembuat transaksi, total biaya, metode pembayaran dan lain-lain. Juga, faktur tersebut menampilkan data detail dari transaksi, misalnya: kode barang, jumlah barang yang dibeli, harga per satuan barang, total harga per item, dan lain sebagainya.

Demikian sekilas intro. Selanjutnya kita akan mengimplementasikan pembuatan laporan master-detail ini di Jasperreport. Saya memakai library Jasperreport 4.0.0, iReport Designer 4.0.1, NetBeans 8.1 dengan JDK 1.7. Sisanya tinggal menyesuaikan saja dengan teknologi terbaru. Continue reading “Tutorial Laporan Master-Detail Di Jasperreport”

Menambahkan Internal Padding Pada Text Component Di Java Swing

Assalamualaikum.

Meskipun sekarang jamannya udah pada JavaFX dan Android, tapi nggak apalah sekali-sekali ngepost tentang Swing, secara kerjaan di kantor masih pake Swing juga.

Sebenarnya udah cukup lama saya merasa resah (halah!) dengan tampilan text component di Swing, yang mepet ke pinggirannya. Seperti ini contohnya:

Ternyata kita bisa buat padding disitu. Caranya:

  1. Klik kanan di component-nya, pilih Properties.
  2. Di jendela Properties, pilih property Border. Pilih Empty Border.
  3. Atur Inset-nya. Saya isikan saja 5 untuk tiap sisi.
  4. Kemudian Klik OK. OK. OK.

Sudah. Tampilannya jadi berbeda sekarang.

Sekian.

Android Tutorial: Menggunakan Google Maps API

Assalamualaikum.

Beberapa hari belakangan saya sedang belajar android programming. Ternyata asyik juga. Saya jadi memutuskan mau mendokumentasikan item-item belajar saya, yang random juga sih sebenarnya.

Untuk post kali ini tentang penerapan Google Maps API pada aplikasi android yang dibuat. Buka Android Studio, buat project baru dengan empty activity. Minimum SDK saya set ke Android KitKat 4.4.4. Let’s start! Continue reading “Android Tutorial: Menggunakan Google Maps API”

Genymotion Virtual Device Not Found

Assalamualaikum.

Kebetulan hari ini saya mau ngerjain project Android. Virtual device yang saya pakai adalah si Genymotion, karena default AVD rasanya beraat banget, ngos-ngosan di laptop saya yang cuma memiliki RAM 4GB (kok malah curhat).

Kondisinya adalah: genymotion dan Android Studio sudah terkoneksi. Lalu saya start virtual device saya (Google Nexus 5 5.00 API 21), virtual device started. Aman. Masalah kemudian muncul pada saat saya run aplikasi saya, virtual device saya tidak ditemukan di dialog Select Deployment Target. Oh, ini mungkin perlu di-restart lagi virtual device-nya. Tapi sama saja, saya restart virtual device, bahkan sampai restart Android Studio, tetap nihil.

Setelah browsing, saya dapat caranya.

Mau tau caranya? Ketik amin dan klik like

Yang harus saya lakukan adalah mengubah pengaturan lokasi Android SDK milik Genymotion menjadi sama dengan milik Android Studio.

lokasi android sdk milik si Android Studio
lokasi android sdk milik si Android Studio

Okay, it’s quite easy!

screenshot-from-2016-11-28-220728
ubah lokasi android sdk si geny

Done. Dan sekarang si virtual device sudah nangkring cantik, siap buat deploy app!

ready to rock!
ready to rock!

Download Link MP3 Di Website Dengan wget

Assalamualaikum.

Wah, lagi-lagi penyakit males ngepost. OK lah, kali ini saya mau berbagi soal aplikasi yang powerful di Linux dalam urusan download-men-download (ribet ya). Nama aplikasinya adalah wget. Aplikasi ini terminal-based, jalannya di terminal aja.

Kasusnya kali ini adalah, saya ingin men-download file-file murottal milik beberapa Syaikh. Setelah browsing sama om google, saya menemukan link yang saya cari, dari juz 1 sampai 30 milik Syaikh Mishary Rashid. Link yang tersedia adalah per-surah, jadi dari surah 1 sampai 114.

screenshot-from-2016-11-27-190252

Karena tentu saja download satu-satu itu ribet -secara ada 114 surah yang mau di-download, maka saya memutuskan pakai wget. Jadilah saya mencari tutorial tentang ini, dan saya dapatkan juga command yang sesuai. Seperti ini kira-kira:

Command ini akan memfokuskan download ke file yang ber-ekstensi mp3 dan mengabaikan ekstensi lainnya, misal .html dan sebagainya.

Lalu saya ganti linknya jadi seperti ini:

Run!

Download is started. Seperti ini output-nya.

screenshot-from-2016-11-27-190747
download sedang berlangsung….

Ekstensi file lain akan diabaikan.

screenshot-from-2016-11-27-190853
Mengabaikan ekstensi selain mp3

Dan, hasilnya. 114 surah selesai dalam beberapa menit.

114 surah selesai gan!
114 surah selesai gan!

Yap, begitulah kira-kira. Kalau mau download tipe file lain juga bisa, ganti saja parameter ekstensi file nya dengan tipe lain.

Rename Root Package di NetBeans

Assalamualaikum!

Wah ternyata udah 2 bulan lebih gak ngepost, haha. Mumpung lagi mood, saya nulis aja deh. Cuma catatan kecil, gimana caranya renaming root package (atau bisa juga package di dalam package yang masih punya sub-package, ribet yak? Haha).

Jadi caranya simpel. Klik tab Files (biasanya ada di panel kiri, satu grup sama tab Projects dan Services) atau klik Window -> Files. Ke root project, di strukturnya ada folder src, nah silakan rename package-nya. Klik kanan di package yang mau di-rename, pilih Refactor, lalu Rename. Done!

screenshot-from-2016-11-03-102212

Dah gitu aja. 😀

Download Video Youtube Dengan Youtube-DL

Yap, sekarang Youtube memang jadi media video sharing paling populer. Selain bisa buat ngupload video vlog alay, bisa juga dipakai untuk media belajar. Dan saya sendiri banyak belajar soal pemrograman dan bahasa Inggris dari video-video yang diupload orang-orang hebat.

Karena keterbatasan kuota internet, jadinya tidak setiap saat streaming langsung ke Youtube jadi pilihan saya. Karena itu, biasanya saya nyari koneksi super-dewa, video di-download, dan nanti ditonton di kost.

Setelah searching sana sini dan mencoba berbagai plugin/ekstensi di browser baik Mozilla ataupun Chrome, dan kebanyakan saya kurang sreg dengan berbagai plugin tersebut, saya coba pakai aplikasi youtube-DL. Aplikasi ini berjalan di Linux, instalasinya cukup mudah, tinggal ketikkan saja: sudo apt-get install youtube-dl.

Aplikasi ini bisa di-run via terminal di Linux. Ketikkan: youtube-dl [link video yang akan di-download]. Contoh: youtube-dl https://www.youtube.com/watch?v=4XZdpwchIt4.

Hal menarik lainnya dari aplikasi ini adalah, kita bisa download video dalam satu playlist di Youtube sekaligus, cukup tambahkan parameter -t, seperti ini: youtube-dl -t https://www.youtube.com/playlist?list=PLFA4F2FDD28D0C40E.

Yang saya suka dari youtube-dl adalah, video yang di-download dapat di-interrupt (dengan tekan CTRL+C) dan dapat di-resume sewaktu-waktu, hanya saja download dapat dilanjutkan dengan menggunakan link video yang sama dan pada direktori yang sama.

Tips dari saya kalau mau pakai youtube-DL untuk download video youtube.

Ini lebih dikhususkan kalau download video playlist. Saya biasa mengelompokkan video-video dengan kategori atau author sama ke direktori/folder tertentu. Dan saya selalu menyiapkan sebuah file untuk menyimpan link playlist video, sehingga sewaktu-waktu dapat saya resume download-nya.

Hal yang biasa saya lakukan ketika ingin me-resume download yang sudah dipending sebelumnya adalah dengan mengetikkan command berikut:

‘run_download’ adalah nama file tempat saya menyimpan link video/playlist.

Catatan

Sebagian video di Youtube tidak dapat di-download oleh youtube-DL, kalau diproteksi oleh copyright atau semacamnya. Sebagian video klip musik dari band atau penyanyi diproteksi dan ketika mencoba men-download video mereka menggunakan youtube-DL, akan muncul error dan (saya lupa pesan error-nya) pesan error-nya berkenaan dengan hak cipta atau semacamnya.

Video yang saya download di youtube kebanyakan video tutorial pemrograman, dan hanya jadi konsumsi pribadi, tidak juga saya perjualbelikan. Semata-mata hanya untuk tujuan edukasi dan pendidikan.

Yup, sekian post saya tentang youtube-DL. Please use it wisely. :)

Genymotion Error “libstdc++.so.6 version CXXABI_1.3.8 not found”

Jadi ceritanya setelah instalasi Genymotion di Linux Ubuntu saya, dan pada saat akan saya run dengan command ./genymotion, tiba-tiba muncul error seperti ini:

Screenshot from 2016-08-29 10:14:40

Maka, kemanakah saya harus bertanya? Tentu saja, OM Google! Dan beberapa saat kemudian saya dapat jawabannya di SO, cukup ketikkan beberapa command.

Dan, it works like a charm!

Screenshot from 2016-08-29 10:17:45

Sekian.