Saturday, November 27, 2010

Menambahkan Timer Dalam Sage

Mari kita lanjutkan menambahkan fungsi Timer dalam aplikasi Sage yang telah kita bangun.

Sekarang saatnya yang paling menyenangkan karena kita akan menambahkan fungsi perubahan secara otomatis setiap beberapa detik.

Langkah 1. Menggunakan Options Untuk Menyimpan Setting Timer

Setting untuk perubahan quote disimpan ke dalam NetBeans Platform dalam Options Panel yang sudah built-in di platform ini.

Caranya:
Right-click dalam package: com.ongbudi.sage.quote
Pilih New -> Options Panel



Setelah diclick maka diisi dengan:
Title: Sage Options
Tool Tip: Configuration Setting for Sage Application
Key Words: Sage Options
Click Next.



Setelah itu click Finish



Untuk melihat tampilan Sage Options, ada di dalam menu Tools -> Options dalam aplikasi Sage.



Setelah kita dapat menemukan option tersebut, mari kita rancang apa yang perlu diubah.

Kita buka SageOptionsPanel.java
Click Design, tambahkan Label dan TextField seperti contoh di bawah ini.
Nama variable TextField diubah menjadi jInterval



Nah, untuk menyimpan perubahan dilakukan melalui pengubahan method load() dan store()

Method load() menjadi:

void load() {

jInterval.setText(NbPreferences.forModule(SageOptionsPanel.class).get("jInterval","15"));

}


Method store() menjadi:
void store() {

NbPreferences.forModule(SageOptionsPanel.class).put("jInterval", jInterval.getText());
}

Tambahkan import:
import org.openide.util.NbPreferences;

Sekarang sudah dapat menyimpan berapa detik interval untuk setiap perubahan quote.

Langkah 2. Mengambil Nilai Interval Dalam Options Panel

Untuk mengambil nilai Interval yang tersimpan dalam options panel dilakukan sebagai berikut:

Tambahkan baris ini ke dalam method componentOpened() dalam ShowQuoteTopComponent.java

//Setting Timer
Preferences pref;
pref = NbPreferences.forModule(SageOptionsPanel.class);
int Interval = 0;
Interval = toInt(pref.get("jInterval", ""));
Interval = Interval * 1000;

Tambahkan juga fungsi toInt() seperti di bawah ini:

private int toInt(String number) {
Integer temp;
temp = new Integer(number);
return temp.intValue();
}

Tambahkan import:
import java.util.prefs.Preferences;
import org.openide.util.NbPreferences;


Langkah 3. Menambah Fungsi Timer dalam Show Quote

Bagaimana caranya menambahkan fungsi timer untuk menampilkan Quote? Mari kita sama-sama membuatnya.

Karena kita sudah memiliki nilai dari Interval dari langkah ke 2, maka kita langsung dapat menggunakannya dalam menentukan Interval.

Selanjutnya dibuat inner class untuk mengerjakan tugas rutin setiap Interval waktu.

class Ticker extends TimerTask {
public void run() {
java.awt.event.MouseEvent evt = null;
QuoteTextMouseClicked(evt);
}
}
Kalau diperhatikan fungsi di atas, kita hanya memanggil mouse click event yang pernah dibuat sebelumnya.

Kemudian ditambahkan fungsi untuk menjalankan Ticker ini setiap Interval waktu, caranya dengan menambahkan baris ini dibaris terakhir dari method componentOpened()

if (daemon == null) {
daemon = new Timer(true);
}
TimerTask runnable = new Ticker();
daemon.scheduleAtFixedRate(runnable, 0, Interval);
}
Selesai sudah aplikasi kita. Quote akan berganti-ganti setiap Interval waktu yang ditetapkan.



Oke, sampai di sini dulu.
Sampai jumpa dalam aplikasi berikutnya yang akan sama-sama kita buat.

Salam Java,
Ong Budi Setiawan

Wednesday, November 24, 2010

Menambahkan Fungsi Aplikasi "Sage"

Mari kita lanjutkan menambahkan fungsi-fungsi dalam aplikasi Sage yang telah kita bangun kerangka-nya.

Langkah 1. Menambahkan Library Db4o 5.2

Right-Click Libraries dari Module Qoute.
Pilih Add New Library.



Click Browse, dan pilih: db4o-5.2-java5.jar.
Click Next.



Project Name diisi dengan: Object Database
Click Next.



Code Name Base diisi dengan: com.ongbudi.sage.odb.
Click Finish.




Langkah 2. Menambah Fungsi Add Quote

Click Quote Module.
Cilck Source Packages
Click com.ongbudi.sage.quote
Double-Click AddQuoteTopComponent.java



Tambahkan Label dan Text Field ke dalam tampilan:



Untuk menampung data dibuat class: Quote.java
Dalam Source Packages: com.ongbudi.sage.PDM

package com.ongbudi.sage.PDM;

public class Quote {

private String Quote;
private String Author;

public Quote(String q, String a) {
this.Quote = q;
this.Author = a;
}

public String getQuote() {
return this.Quote;
}

public String getAuthor() {
return this.Author;
}

public void setQuote(String q) {
this.Quote = q;
}

public void setAuthor(String a) {
this.Author = a;
}


Tambahkan beberapa import di Source Code AddQuoteTopComponent.java :
import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.reflect.jdk.JdkReflector;
import com.ongbudi.sage.PDM.Quote;



Fungsi yang dijalankan oleh tombol New yaitu:

Quote.setText(null);
Author.setText(null);

Fungsi yang dijalankan oleh Tombol Save yaitu:

Db4o.configure().reflectWith(new JdkReflector(Thread.currentThread().getContextClassLoader()));
ObjectContainer db = Db4o.openFile("Sage.ODB");
try {
Quote quote = new Quote(Quote.getText(), Author.getText());
db.set(quote);

} finally {
db.close();
}
Quote.setText("");
Author.setText("");

Oke, sekarang database sudah bisa menyimpan quote yang dibuat.




Langkah 3. Menambah Fungsi Show Quote

Sekarang saatnya kita akan menampilkan Qoute yang sudah tersimpan.
Untuk itu kita buat terlebih dahulu tampilannya:

Double-Click: ShowQuoteTopComponent.java

Ubah tampilan menjadi seperti ini:




Dalam Source, tambahkan variable di bawah ini:
private int counter = 0;
public LinkedList listQuote = new LinkedList();
public ObjectContainer db;

Resolve semua import dengan mengikuti saran dari NetBeans IDE.

Untuk pertama kali kita buat fungsi untuk mengganti quote setiap dilakukan click di tampilan quote:

Right-Click dalam jScrollPane untuk QuoteText, pilih Event -> Mouse –> Mouse Clicked

Tambahkan kode ini:


// Ganti Quote Setiap Click
int i;
i = listQuote.size() - 1;
System.out.println(listQuote.size());

if (counter >= i) {
counter = 0;
} else {
counter++;
}
// tampilkan quote
Quote qt = (Quote) listQuote.get(counter);
System.out.println(listQuote.get(counter));
QuoteText.setText(qt.getQuote());
AuthorText.setText(qt.getAuthor());


Untuk mengisi Quote yang akan ditampilkan, dilakukan pengambilan data dari database melalui method componentOpened().

public void componentOpened() {
if (db == null) {
Db4o.configure().reflectWith(new JdkReflector(Thread.currentThread().getContextClassLoader()));
db = Db4o.openFile("Sage.ODB");
}

counter = 0;
try {
Quote quote = new Quote(null, null);
ObjectSet hasil = db.get(quote);
System.out.println("Isi Database: " + hasil.size());
while (hasil.hasNext()) {
Quote qt = (Quote) hasil.next();
listQuote.add(qt);
QuoteText.setText(qt.getQuote());
AuthorText.setText(qt.getAuthor());
counter++;
}
} catch (Exception e) {
} finally {
if (db != null) {
db.close();
}
}

//counter dikembalikan ke awal list
counter = 0;

Oke, sekarang sudah dapat dijalankan dengan melakukan click, maka quote akan berganti-ganti.

Tampilannya akan menjadi seperti ini:



Oke, sampai di sini dulu, nanti kita lanjutkan dengan tambahan fungsi yang lain.

Salam Java,
Ong Budi Setiawan

Saturday, November 20, 2010

Membangun Aplikasi “Sage” Dengan NetBeans Platform Dan Database Object Db4o

Pernah dengar aplikasi “Sage”, program ini menampilkan quote atau kata-kata bijak dari orang-orang terkenal. Aplikasi ini akan menampilkan quote yang disimpan di dalam database object Db4o dan kemudian ditampilkan ke layer. Dalam periode tertentu, kata-kata bijak ini akan diganti secara otomats.

NetBeans platform yang digunakan terdapat dalam Netbeans 6.5 dan Db4o yang digunakan adalah Db4o versi 5.2.

Mari kita bangun bersama-sama.

Langkah 1. Membuat kerangka menu utama Sage

Dari menu NetBeans:
File -> New Project.
Pilih: NetBeans Project
Pilih: NetBeans Platform Application



Click Next.
Ketik: Sage
Untuk nama project.



Click: Finish.
Hasilnya sudah dapat dijalankan dan tampilannya seperti ini:



Jika mau lihat hasilnya, saya sertakan zip file dari langkah satu ini:


Langkah 2. Membuat Module Quote.

Module Quote ini nanti akan berisi dua buah fungsi yaitu Add Quote untuk menampilkan quote dan Show Quote untuk menampilkan Quote.

Untuk menambah module:

Right Click: Module, pilih Add New…



Ketik Quote, sebagai nama module. Click Next



Untuk Code Name Base: com.ongbudi.sage.quote



Jika mau lihat hasilnya, saya sertakan zip file dari langkah ke-dua ini:




Langkah 3. Menambah Window Component Add Quote

Kita akan menambahkan menu untuk menambah Quote yaitu dengan Window Component: Add Quote.

Caranya:
Click: Source Package dalam Module Quote.

Right-Click, Source Package kemudian pilih New -> Window Component



Pilih Windows Position: leftSlidingSide,,
Click Next.



Untuk Class Name Prefik diisi: AddQuote. Click Next.



Jika mau lihat hasilnya, saya sertakan zip file dari langkah ke-tiga ini:


Langkah 4. Menambah Window Component Show Quote

Caranya:
Click Source Package dalam Module Quote.

Right-Click, Source Package kemudian pilih New -> Window Component.

Window Position diganti menjadi Editor.
Dan pilih Open on Application Start.



Class Name Prefik diisi: ShowQuote.
Click Finish.



Dari ke-empat langkah ini. Maka secara tampilan, aplikasi ini sudah selesai dikerjakan.

Kita akan lanjutkan untuk mengisi fungsi-fungsi yang dijalankan di tutorial selanjutnya.
Jika dijalankan, tampilan aplikasi seperti di bawah ini:



Hasil dari langkah ke-empat dapat diambil di zip file ini.



Sampai di sini dulu.

Salam Java,

Ong Budi Setiawan

Monday, July 19, 2010

Membuat Kue Java (Object dan Class)

Di food court Puri Indah, seorang rekan saya bertanya, bagaimana bisa mengerti bahasa pemrograman Java. Saya jelaskan bahwa pemrograman di Java seperti membuat kue dengan cetakan kue. Cetakan kue dikenal sebagai Class dan kue yang dibentuk dari cetakan kue adalah Object. Untuk membangun diperlukan cetakan-cetakan kue (Class) yang digunakan untuk membangun kue-kue (Object) yang akan digunakan oleh program tersebut dalam menyelesaikan tugasnya. Dengan kata lain kita harus menentukan tipe-tipe objek dunia nyata apa saja yang akan disimulasikan oleh kode-kode program.
Sebuah Class pada prinsipnya adalah deskripsi dari bagaimana sebuah objek dibuat (dengan kata lain semacam cetakan atau pola). Untuk setiap objek, terdapat sebuah Class yang menentukan bagaimana objek tersebut dibuat, variabel apa yang akan dimuat, dan pesan apa yang yang akan ditanggapi. Sedangkan Object adalah kombinasi dari fungsi dan data (variabel) yang digabungkan dalam satu entitas. Fungsi di dalam Object dinamakan Method dan memiliki data yang dinamakan Entity. Pemanggilan terhadap suatu Method dalam Object dapat diartikan pengiriman pesan ke Object.
Sebuah Object diinstansiasi (dicetak/dioven kalau istilah kue) dari sebuah Class. Untuk membantu pemahaman mengenai Object dan Class, saya sertakan kode program yang akan menampilkan "Halo Saya Dijalankan 3 Detik Sekali".
package saytimer;
import java.awt.event.*;
import javax.swing.*;

public class SayTimer {
private String haloMessage = "Halo Saya Dijalankan 3 Detik Sekali";
public static void main(String[] args) {
//Di sini dibuat kue Object t dari cetakan kue SayTimer Class
SayTimer t = new SayTimer();
t.go();
}
private void go()
{
Timer t = new Timer(3000, new Ticker());
System.out.println(haloMessage);
t.start();
JOptionPane.showMessageDialog(null, "Click OK to exit program");
System.exit(0);
}
class Ticker implements ActionListener {
public void actionPerformed(ActionEvent event) {
System.out.println(haloMessage);
}
}
}
Sampai di sini dulu,
Ong Budi Setiawan

Thursday, July 15, 2010

Hasil Pertama Belajar Bahasa Java.... Palm Pre Plus Phone GRATIS!


WebOS App Contest Award Notification



Hello,

Congratulations! Your app was accepted into the WebOS App Contest and you will be receiving a Palm phone award!

We want to personally thank you for contributing to the Palm WebOS app community. We had nearly 600 apps submitted in just a little over two weeks. The apps ranged from simple to complex and everything in-between. Many of you collaborated and developed your apps as a team, contributed comments and votes on other apps and blogged about your issues and experiences. We loved the teamwork and “garage-like” approach to your efforts!

We hope you are excited to receive your new Palm phone and hope it inspires you to create more apps in the future!

Thanks again for your participation in this contest! We consider it a huge success. Enjoy your new Palm phone!

The WebOS App Contest Team

Monday, April 12, 2010

Penggunaan Operator Aritmetika

Operator matematika yang digunakan dalam operasi biner (menggunakan dua variable) adalah:
+ = Penambahan
- = Pengurangan
* = Perkalian
/ = Pembagian
% = Modulus atau Sisa
Mengenai modulus dengan operator '%' digunakan untuk mendapatkan sisa pembagian dari suatu bilangan.
Contoh:
mod = bil1 % bil2; Jika bil1 = 11 dan bil2 = 5, maka mod = 1.

Operator Increment dan Decrement
Operator ini digunakan dengan satu variable (unary), yaitu:
++ = Penambahan
-- = Pengurangan

Penggunaan operator increment dan decrement dapati dilakukan sebelum (pre) maupun sesudah (post) operator.

Urutan Pengerjaan Operator

Dalam melakukan penghitungan, urutan proses yang dilakukan adalah sebagai berikut:
1. Operator dalam tanda kurung
2. Operator increment dan decrement
3. Operator perkalian dan pembagian
4. Operator penambahan dan pengurangan

Type Casting dan Promotion
Promotion adalah tindakan yang dilakukan compiler dalam mengubah
tipe variable untuk dapat menampung nilai yang lebih besar. Contoh dari int ke float.

Casting adalah memperkecil ukuran dari variable dengan mengubah tipe ke yang lebih kecil.

Syntaxnya:

identifier = (target_type) value

Monday, April 5, 2010

Primitive Data Types di Java

Ada delapan primitive data types di Java, dan bisa dibagi ke dalam empat kategori:
1. Tipe Integral: byte, short, int dan long
2. Tipe Floating point: float dan double
3. Tipe Textual: char
4. Tipe Logical: boolean

Penggunaan Huruf L dan F untuk membuat spesifik Long dari tipe int secara default,
dan Float dari tipe double secara default.
Literal L: long
Literal F: float, contoh: float pi = 3.14F;

Tipe char, menggunakan tanda kutip tunggal (') untuk memberikan nilainya, contohnya:
public char ukuranBajuJJ = 'L';

Tipe boolean, hanya bisa diisi dengan nilai true atau false.


Aturan Penamaan Variable

Paket: 2 atau 3 huruf kecil (seperti domain internet)
contoh: com.org.net.edu / au.id.sg

Kelas dan Interface: kata benda/ungkapan kata benda. Syntax: Tiap Huruf Pertama Kata Gunakan Huruf Besar.
contoh: InternetRadio, MultimediaDatabase

Method: kata kerja/ungkapan kata kerja. Syntax: huruf Kecil Untuk Kata Pertama, dan Seterusnya Besar.
contoh: setNilai, getUmur, isValidData

Variable (fields): singkatan yang mudah diingat.
contoh: sr (stream reader), buf (buffer), d (double), s (string).

Konstanta: HURUF BESAR
contoh: MAX_HIGH, MAX_VOLUME

Deklarasi, Inisiasi, dan Penggunaan Variable

Attribute Variable:
* Dideklarasi di luar method.
* Dideklarasi tanpa keyword static.
* Berisi data spesifik dari suatu object instance dari class dan disebut instance variable.


Local Variable:
* Didefinisikan dalam sebuah method.
* Hanya bisa digunakan secara lokal di dalam method.


Kegunaan Variable:
* Menyimpan attribute data dari suatu object instance.
* Memberikan nilai dari satu variable ke yang lainnya.
* Mewakili nilai dalam sebuah ekspresi matematika
* Menyimpan reference ke object yang lain.


Deklarasi dan Inisialisasi Variable
Syntax:
Deklarasi dan inisialisasi Attribute Variable
[modifier] type identifier [=value];

Deklarasi Variable dalam Method
type identifier;

Inisiasi Variable dalam Method
identifier = value;

Deklarasi dan inisialisasi Variable dalam Method
type identifier [=value];

Wednesday, March 10, 2010

Difficult....? Is Nothing!

Selamat bergabung dalam pemrograman dalam bahasa Java.
Seperti kata pepatah,"difficult...? Is nothing!".

Tidak ada yang sukar di dunia ini, yang ada adalah yang tidak terbiasa.
Kalau sudah terbiasa, tidak ada lagi yang sukar.

Anakku JJ, sewaktu belajar jalan terjatuh beberapa kali dan saya ingat ia pertama kali bisa berjalan sewaktu dia diturunkan di kamar hotel Jepara Indah di Jepara.

Apakah sekarang dia masih ingat betapa susahnya untuk berjalan? Tidak lagi.
Mari kita sama-sama membiasakan diri dengan bahasa Java untuk membangun aplikasi komputer.

Salam,
Ong Budi Setiawan