Archive

Archive for March, 2011

Satu pesan dari Tuhan

March 30, 2011 4 comments

Dahulu kala ada seorang yang dikenal Soleh, didatangi oleh dua orang yang berbeda, yang satu miskin dan yang satu lagi kaya. Mereka masing-masing mempunyai keinginan untuk meminta nasihat agar hajatnya bisa tercapai. Mereka mempunyai hajat yang sama, yakni : “Sama-sama ingin ditambahkan rizkinya”.

Orang soleh tersebut kemudian berkata kepada sang Kaya, “Bagaimana mungkin kamu juga ingin menambah rizkimu, padahal Engkau sendiri sudah berada dalam keadaan yang berkecukupan?”

Lalu sang Kaya menjawab, “Aku tidak tahu, tapi aku masih merasa kurang saja dengan yang ada padaku sekarang.”

Kemudian, kepada masing-masing orang tersebut, orang soleh menyuruh mereka agar, “Bersyukur.”

“Baiklah wahai teladan, saya akan mengikuti apa yang Engkau perintahkan.” Kata sang Kaya dengan wajah puas berseri-seri atas jawaban orang soleh tersebut. “Tak kusangka, ternyata mudah sekali agar seseorang bisa bertambah Rizkinya.”

Namun Sang miskin, berbeda dengan Sang kaya, ia malah mengeluh, “bagaimana mungkin bisa Aku bersyukur, aku tinggal di rumah yang tinggi atapnya sama dengan kepalaku, tempat tidurku tidak cukup panjang untuk kakiku, dan lauk daging pun masih ku anggap makanan yang mewah.”

Orang Soleh itu tidak menjawab apa-apa, kecuali hanya kembali menegaskan, “Bersyukurlah.. niscaya nikmatmu bertambah…”

“Baiklah, Akan kucoba saranmu itu,” kata sang miskin dengan wajah kesal.

***

Setelah beberapa tahun kemudian, kedua orang tersebut, si miskin dan si kaya akhirnya datang kembali kepada si orang soleh.

Kemudian, orang soleh berkata, “Bagaimana keadaan kalian saat ini?”

Sang kaya menjawab terlebih dahulu, “Luar biasa wahai teladan, rumahku sekarang bertambah luas, hewan-hewan tungganganku bagus-bagus, binatang ternakku semakin banyak, dan panenku melimpah ruah. Aku merasa bersyukur dan bahagia atas keadaanku saat ini.”

Orang soleh menjawab, “Syukurlah kalau begitu.”

Kemudian sang kaya berkata, “Kalau begitu, bolehkah aku minta doamu wahai teladan? Doakan agar Alloh memberikan keberkahan atas setiap Rizki yang kupunya.”

Orang soleh berkata, “Baiklah,” kemudian mendoakannya, “Ya Alloh, berkahilah segala-segala yang ia punya, dan karuniakanlah kebaikan dan rizki yang semakin banyak untuknya.”

Kemudian, tibalah giliran sang miskin untuk menceritakan keadaannya.

“Bagaimana keadaanmu saat ini?” tanya orang soleh.

“Semuanya semakin bertambah kacau. Aku sekarang sudah tidak punya rumah lagi, aku tidur beratapkan langit, dan untuk makanpun aku harus mengemis dari satu pintu ke pintu.”

“Bukankah dahulu aku sudah perintahkan engkau untuk bersyukur?”

“Iya. Namun aku masih merasa tidak ada yang patut aku syukuri, karena begitu sedikit yang aku miliki. dan andaikata aku memiliki sesuatu, pasti barang itu sudah jelek dan tua.”

“Bukankah aku telah memerintahkanmu untuk bersyukur, agar nikmatmu bertambah?” tanya orang soleh itu lagi.

“Maafkan Aku.” Jawab sang miskin. Kemudian ia berkata lagi, “tapi maukah engkau sekarang mendoakanku agar bertambah rizkiku  seperti yang kau lakukan kepada sang kaya tersebut. sungguh aku sangat membutuhkannya.”

Orang soleh kemudian berdoa, “Ya Alloh, mudah-mudahan Engkau memberikan ia kehidupan yang semakin sempit dan rizkinya yang semakin melarat…!”

Sang miskin langsung terperanjat kaget, dan berkata, “Apa yang kau lakukan, bukankah aku meminta kekayaan? Bukan keadaan yang semakin sempit??”

kemudian orang soleh menjawab, “Dahulu bukankah aku pernah menyuruh kamu agar selalu bersyukur atas kenikmatan yang telah engkau dapatkan dari Alloh, baik sedikit mau pun banyak. Bagaimana mungkin Alloh mau untuk menurunkan Rizkinya yang melimpah kepada orang yang tidak pernah mensyukuri nikmatnya, walau pun itu hanya sebutir nasi??”

***

Jadi satu pesan Tuhan adalah

Syukur

Syukur

Sumber

Advertisements

Tentang JOptionPane Class pada Java

March 26, 2011 Leave a comment

Pada post kali ini, kita akan belajar tentang JOptionPane dan penggunaannya dalam pemrograman swing Java.

JOptionPane merupakan class yang digunakan sebagai standar dialog box  untuk memberikan informasi kepada pengguna aplikasi. Sebenarnya JOptionPane memiliki banyak method, dan kebayakan method tersebut static method. Berikut ini 4 method dari JOptionPane yang sering digunakan.

  1. showConfirmDialog
  2. showInputDialog
  3. showMessageDialog
  4. showOptionDialog

Untuk parameter dari 4 method tersebut mempunyai pattern yang sama. Dan setiap method tersebut memiliki 4 – 7 varian tergantung dari jumlah parameter setiap method ( kecuali showOptionDialog yang cuma memiliki satu variant) .  Berikut ini beberapa parameter yang digunakan pada 4 method tersebut.

  • parentComponent : mendefinisikan component yang menjadi parent dari dialog box. Jika diisi dengan null, maka secara default Frame akan menjadi parent component.
  • message : merupakan message yang akan ditampilkan dalam dialog box. Message bisa berupa String. Tapi type sebenarnya dari parameter ini adalah Object class.
  • title : merupakan title untuk dialog box
  • initialValue  : merupakan input value
  • messageType : mendefinisikan style dari message. Jenis dari messageType sebagai berikut ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, PLAIN_MESSAGE
  • optionType : mendefinisikan kumpulan button option yang muncul pada dialog box. Nilai dari parameter sebagai berikut. DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION ( Nilai dari variable ini dapat di-customize)

Berikut ini contoh codenya. ( Kembali kedasar, tanpa menggunakan pallete pada NetBeans )

Nama file : JOptionDemo.java

/**
*
* @author Taeyeon
*/
import java.awt.Component;
import java.awt.FlowLayout;
import javax.swing.JComponent.*;
import javax.swing.JFrame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;

public class JOptionDemo extends JFrame {

public JOptionDemo(String title){
super(title);
setSize(500,100);
JButton button1 = new JButton("Click Me!");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog((Component) event.getSource(),"Selamat Pagi Dunia","Message Dialog example",3);
}
});

JButton button2 = new JButton("What is your name?");
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
String nameUser = JOptionPane.showInputDialog((Component)event.getSource(),"Input Your Name" );
if(nameUser!=null && nameUser!=""){
JOptionPane.showMessageDialog((Component) event.getSource(),"Arigatou "+ nameUser);
}}
});

JButton button3 = new JButton("Close Application");
button3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
int option = JOptionPane.showConfirmDialog((Component)event.getSource(), "Close Application?");
if (option == JOptionPane.YES_OPTION){
System.exit(0);
} else if(option==JOptionPane.NO_OPTION){
//Do Nothing
}

}
});

setLayout(new FlowLayout(FlowLayout.CENTER));
add(button1);
add(button2);
add(button3);

}
public static void main(String[] args){
new JOptionDemo("Dialog Demo").setVisible(true);
}
}

 

Semoga bermanfaat 😀

Referensi : Dari berbagai sumber

Handling Mouse Wheel Event

March 24, 2011 Leave a comment

Belajar lagi tentang Event Handling dari dasar.

Berikut ini code untuk handling mouse wheel event.

Nama file MouseWheelDemo.java

import javax.swing.*;
public class MouseWheelDemo extends JFrame {
MouseWheelEventDemo event = new MouseWheelEventDemo();

public MouseWheelDemo(){
setSize(500,500);
JTextArea mainJTextArea = new JTextArea();
mainJTextArea.addMouseWheelListener(event);
add(mainJTextArea);
setVisible(true);

}
public void setFrame(){

setVisible(true);
}

public static void main(String[] args){

MouseWheelDemo x = new MouseWheelDemo();

}

}

Nama file MouseWheelEventDemo.java

import java.awt.event.MouseWheelListener;

public class MouseWheelEventDemo implements MouseWheelListener{

public void mouseWheelMoved(java.awt.event.MouseWheelEvent event) {
System.out.println("MouseWheelListenerDemo.mouseWheelMoved");

if (event.getWheelRotation() < 0) {
System.out.println("Rotated Up " + event.getWheelRotation());
} else {
System.out.println("Rotated Down " + event.getWheelRotation());
}

}

}

Semoga bermanfaat. 😀

Referensi : Dari berbagai sumber.

Konvensi Code dalam Pemrogramman Java

March 23, 2011 Leave a comment

Beberapa hari ini saya sering merasa “terganggu” dalam belajar pemrograman Java. Hal yang cukup mengganggu saya yaitu bagaimana penamaan variable, method dan class yang sesuai dengan konvensi ( kesepakatan umum ) dalam pemrogramman Java. Memang benar, kita bisa memberikan nama untuk variable, method dan class sesuka kita ( asal bisa running ). Tapi kebiasaan tersebut tidak baik untuk kesehatan kita :D. Jika kita memberikan nama varible, method, class dimana nama dan tujuannya tidak sesuai bisa membuat kita sendiri bisa bingung apalagi jika program yang kita buat skalanya besar. Dan dengan penamaan yang sesuai dengan konvensi, maka jika program kita dibaca oleh orang lain akan lebih mudah untuk dipahami.

Berikut ini hasil pencarian saya di google.

Untuk variable

  • Nama variable harus menggunakan deskripsi yang jelas dan dapat mewakili isi dari variable tersebut
  • Jika variable terdiri dari dua kata, kata pertama diawali dengan huruf kecil ( lowercase ) dan kata kedua diawali dengan huruf besar ( uppercase ). Contoh fileName, audioSystem.
  • Ditulis dalam bahasa inggris
  • Menggunakan prefik is jika variable bertipe Boolean. Contoh isFound, isOpen. ( Alternatif prefik yang lain antara : has, can dan should. )
  • Untuk java swing variable menggunakan suffix sesuai dengan jenis typenya. Contoh nameTextField, leftScrollbar, mainPanel.
  • Negasi nama variable dengan type Boolean harus dihindari. Contoh isFound bukan isNotFound.
  • Penggunaan singkatan harus dihindari. Contoh ActionEvent event bukan ActionEvent e
  • Penamaan konstanta / final variable adalah huruf besar ( uppercase ) dan dengan underscore untuk memisahkan antar kedua kata. Contoh   DEFAULT_NUMBER.
  • Private class variables menggunakan underscore suffix. Contoh private String name_;

Untuk method dalam Java

  • Singkatan dan akronim tidak boleh menggunakan huruf besar jika digunakan sebagai nama method. Contoh openDvdPlayer(); bukan openDVDPlayer();
  • Nama untuk method menggunakan kata kerja dan kata pertama diawali dengan huruf kecil ( lowercase ) dan kata kedua diawali denga huruf besar ( uppercase ). Contoh getName(), computeTotalWidth()
  • Menggunakan get / set untuk melakukan akses terhadapa variable. Contoh employee.getName();   employee.setName(name);
  • Kata find dapat digunakan pada method jika digunakan untuk mencari sesuatu. Contoh findSmallestElement();
  • Menggunakan prefik is jika nilai kembalian method bertipe Boolean. Contoh hasLicense();,  isOpen();. ( Alternatif prefik yang lain antara : has, can dan should. )

Untuk nama class dalam Java

  • Menggunakan huruf besar ( uppercase ) untuk setiap awal kata. Contoh PersonDetail
  • Nama harus merepresentasikan isi / detail class

Others untuk penulisan statement dalam Java

  • incompleteness of split lines harus dihindari. Contoh

totalSum = a + b + c

+ d + e;

  • Dalam import class harus eksplisit. Contoh import java.util.List; bukan import java.util.*;
  • Executable statements pada conditionals harus dihindari. Contoh

InputStream stream = File.open(fileName, “w”);

if (stream != null) { : }

bukan

if (File.open(fileName, “w”) != null))

{ : }

  • Statement if-else. Contoh

if (condition) {

statements;

}

else

{

statements;

}

  • Statement try-catch. Contoh

try {

statements;

} catch (Exception exception) {

statements;

} finally {

statements;

}

  • Menggunakan spasi dalam program. Contoh a = (b + c) * d; bukan a=(b+c)*d;

Semoga bermanfaat 😀

Referensi : dari berbagai sumber

Menampilkan dan Mengedit File Text (.txt ) Melalui JTextArea

March 15, 2011 2 comments

Pada kesempatan kali ini, kita akan mencoba menampilkan isi dari file .txt untuk ditampilkan pada aplikasi Java menggunakan JTextArea Class. Langsung saja kita mulai perjalanan ini 😀

  • Buat interface program seperti berikut.
Rancangan GUI Program

Rancangan GUI Program

Ubah nama variabel JTextArea menjadi txArea

Ubah nama variabel button untuk ViewText menjadi btView

Ubah nama variabel button untuk SaveText menjadi btSave

  • Deklarasi package yang digunakan


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FileNotFoundException;
import java.io.IOException;

  • Deklarasi Variable global yang digunakan

File sampleFile = new File("sample.txt");

String text = null;

  • Isi untuk method btView dan btSave sebagai berikut.

btView

private void btViewActionPerformed(java.awt.event.ActionEvent evt) {
if(btView.getText()=="View Text") {
try{
FileReader fileReader = new FileReader(sampleFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while ( ( text = bufferedReader.readLine ( ) ) != null )
txArea.append ( text + "\n" ) ;
bufferedReader.close();
}
catch(FileNotFoundException ex){
ex.printStackTrace();
}
catch(IOException ex)
{
ex.printStackTrace();
}
btView.setText("Clear Text");

}
else
{
txArea.setText("");
btView.setText("View Text");
}

}

dan btSave

private void btSaveActionPerformed(java.awt.event.ActionEvent evt) {
try{
String text= txArea.getText();
FileWriter fileWriter = new FileWriter(sampleFile);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(text, 0, text.length());
bufferedWriter.newLine();
bufferedWriter.close();
}
catch(IOException ex){
ex.printStackTrace();
}
txArea.setText("");

}

  • Berikut ini tampilan program setelah semua selesai
GUI Program

GUI Program

Button ViewText untuk menampilkan isi dari file teks txt, sedangkan button SaveText untuk menyimpan isi teks setelah diedit kedalam file txt.

Asumsi :  nama file teks adalah sample.txt sudah ada sebelumnya.

Berikut ini link download program diatas.

Semoga bermanfaat 😀

Referensi : Dari berbagai sumber

Template pada C++

March 12, 2011 Leave a comment

Dalam pemrograman, terutama yang sangat tergantung pada tipe variable, sering kali kita direpotkan dengan harus membuat fungsi yang berfungsi sama tapi dengan tipe variable berbeda. Untuk itu pada C++ dikeluarkanlah sebuah keyword baru, yaitu template.Dengan penggunaan template kita bisa membuat sebuah fungsi yang bisa mendukung segala macam tipe variable. Penggunaan template tidak terbatas hanya pada fungsi tapi juga mencakup class( termasuk juga struct,union).Secara garis besar penggunaan template dapat dibagi 2 yaitu template pada fungsi(function template)dan template pada Class (class template). Ok, Langsung saja kita lanjutkan petualangan ini 😀

Template Function

Berikut ini merupakan template fungsi untuk mencari nilai maksimum pada suatu array.

template <class T> T max( T x[], int jumlah)

{

T max = X[0];

for(int i=1; i< jumlah; i++)

if(max<x[i])

max=x[i];

return max;

}

Keyword Template mengindikasikan bahwa deklarasi fungsi tersebut merupakan definisi suatu template. Sedangkan keyword class mengindikasikan bahwa T merupakan salah satu type parameter. Dan keyword class dapat diganti dengan parameter typename.

Berikut ini contoh Function Template.

#include <iostream>
using std::cout;
using std::endl;
template<typename T> T max(T x[], int len)
{
T max = x[0];
for(int i = 1; i < len; i++)
if(max < x[i])
max = x[i];
return max;
}

int main(void)
{
int small[] = { 1, 24, 34, 22};
long medium[] = { 23, 245, 123, 1, 234, 2345};
double large[] = { 23.0, 1.4, 2.456, 345.5, 12.0, 21.0};

int lensmall = sizeof small/sizeof small[0]; /* untuk memperoleh panjang array */
int lenmedium = sizeof medium/sizeof medium[0]; /* untuk memperoleh panjang array */
int lenlarge = sizeof large/sizeof large[0]; /* untuk memperoleh panjang array */

cout << endl << max(small, lensmall);
cout << endl << max(medium, lenmedium);
cout << endl << max(large, lenlarge);

cout << endl;
return 0;
}

Class Template

Berikut ini defini Class Template


template <class T> class CExample {

T  Variable;

//Code untuk class

}

Saya rasa untuk pembentukan class  dari class template lain tidak akan jauh berbeda seperti pada function template, karena hanya membutuhkan sedikit penyesuaian.

Semoga bermanfaat :D

Referensi: Dari berbagai sumber

 

Tentang String dan StringBuffer dalam Java

March 10, 2011 Leave a comment

Berbeda denga type data primitif yang lain, type data String dalam Java diperlakukan sebagai object. Object String dalam Java dapat dibuat dengan dua cara, yaitu:

Penulisan sesuatu di dalam tanda antara petik ganda (literal String). Cara ini digunakan untuk mengakomodasi kebiasaan dari bahasa C/C++

  • String s = ”Hello World”;
  • System.out.println(“Hello World”);

Pembuatan object String dengan keyword new.

  • String s = new String(“Halo”);

Untuk lebih detail tentang String Class dapat dilihat disini. Class String mempunyai atribut final, sehingga Class String tidak dapat di-extends / diturunkan.

Dalam Java, terdapt dua jenis memory yaitu:

  • Stack (tempat local variable dan tumpukan method)
  • Heap (tempat instance variable dan object), Di dalam heap terdapat bagian memory yang disebut dengan String constant pool

Bila kita membuat object String dengan penulisan sesuatu di antara tanda petik ganda (literal String), maka object String tersebut akan berada di dalam String constant pool. Sedangkan bila kita membuat String dengan keyword new, maka object String tersebut akan berada di dalam heap (tetapi diluar String constant pool)

Khusus untuk pembuatan object String dengan keyword new (ex: String sample = new String(“Hello World”) ), sebenarnya terdiri dari 3 buah proses (yang melibatkan 2 buah object String), yaitu :

  • Pembuatan object String “Hello World” di dalam String constant pool. Hal ini karena “Hello World” adalah literal String yang otomatis membuat object di String constant pool.
  • Pembuatan object String “Hello World” di dalam heap (non constant pool).
  • Penghapusan object String “Hello World” di dalam String constant pool (bila tidak ada yang mereferensi String) ini

Pada saat java menjumpai literal String (dalam kode program), maka java akan mencari String yang sama dengan literal String tersebut di dalam String constant pool. Bila ternyata di dalam pool ditemukan object String yang sama, maka reference akan menunjuk pada object String di dalam pool tersebut. Bila ternyata java tidak menemukan di dalam String constant pool, maka java akan membuat object String di dalam String constant pool terlebih dahulu.

Object String adalah immutable (tidak dapat diubah) . Pengertian tidak dapat diubah adalah, sekali sebuah object String berisi suatu nilai, maka nilai tersebut tidak dapat diubah (tidak peduli apakah object String tersebut berada pada heap ataupun String constant pool). Dalam praktek pemrograman, kita merasa bahwa object String dapat berubah, hal ini karena yang berubah adalah nilai reference penunjuk object String bukan object String tersebut.

String Class sangat tidak efektif bila kita ingin melakukan banyak modifikasi terhadap suatu String object, hal ini karena sifat dari String Class yang immutable (banyak modfikasi pada suatu kelas String akan dapat menyebabkan banyaknya object String yang terlibat). StringBuffer dan StringBuilder Class mengatasi permasalahan ini (mutable). StringBuffer thread safe sehingga dapat menjamin konsistensi operasi pada String object.

Pada String Class, method-method akan mengembalikan object String baru (hasil modifikasi) tanpa mengubah object String tempat method dipanggil (karena immutable)

Pada kelas StringBuffer Class method-method akan memodifikasi object tempat method dipanggil, dan kemudian mengembalikan object tersebut sebagai return value dari method.

Method utama pada StringBuffer adalah append dan insert method.Dan dengan Class StringBuffer kita dapat melakukan chaining method.

untuk lebih detail tentang StringBuffer dapat dilihat disini

Referensi : Dari berbagai sumber 😀
Semoga bermanfaat