Tuesday, December 9, 2014

Post Mekanisme Transisi IPv4 ke IPv6 [BAB III]



Mekanisme Transisi IPv6

Pergantian IPv4 ke IPv6 secara langsung adalah satu hal yang mustahil dilakukan secara
serentak di seluruh dunia internet. Oleh itu secara bertahap dilakukan process transisi.
Transisi pun dilakukan tetap menggunakan backbone IPv4 yang ada atau memang ada keinginan membangun sendiri jaringan baru IPv6 (native).

Setiap metode transisi berikut dapat dilakukan secara terpisah atau tergabung satu
dengan yang lainnya, misalnya tunneling IPv6 via IPv4 sudah mencakup dual stack IPv4 dan
IPv6 serta enkapsulasi.

Metode transisi yang dilakukan diantaranya :

a. Dual Stack
Metode ini sangat umum digunakan, IPv4 dan IPv6 address dapat berjalan bersamaan di satu perangkat di semua layer protocol. Sehingga perangkat memiliki dua alamat yakni IPv4 dan IPv6 tanpa saling bertindihan satu sama lainnnya serta memiliki gateway yang berbeda pula.
Routing table yang ada pun terdiri dari routing table IPv4 dan IPv6

Process pengiriman dan penerimaan packet data berlangsung secara terpisah.
Syarat utama untuk dual stack ini adalah system operasi harus mendukung IPv6.
Jika tidak, maka harus dilakukan upgrade versi.
Contoh di Windows XP : (ipconfig /all)

Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Description . . . . . . . . ..: Realtek RTL8139 Family PCIrnet NIC
Physical Address. . . . . . : 00-02-3F-0E-51-35
Dhcp Enabled. . . . . . . . : No
IP Address. . . . . . . . . . .: 202.53.253.18 (IPv4 Address)
Subnet Mask . . . . . . . . .: 255.255.255.224
IP Address. . . . . . . . . . .: 2404:170:253::10 (IPv6 Address)
Default Gateway . . . . . .: 202.53.253.1 (Gateway Ipv4)
2404:170:253::1 (Gateway IPv6)
b. Metode Tunnel (Enkapsulasi).

Metode ini juga umum digunakan untuk menghubungkan jaringan IPv6 dengan jaringan IPv6 lainnya melalui jaringan IPv4 yang memiliki perangkat-perangkat yang tidak mendukung untuk operasional IPv6.
Prinsip dasar tunnel ini adalah membungkus (encapsulate) packet data IPv6 ke dalam format tunnel IPv4 untuk dikirim ke penerima dan dibuka lagi bungkusnya (decapsulate) yang sebelumnya terlebih dahulu di dilakukan setting koneksi tunnel IPv4 ini dari pengirim ke penerima serta sebaliknya.
Prinsip ini juga dikembangkan oleh Penyedia Tunnel Broker IPv6, terutama diperuntukkan bagi user personal menggunakan software (gratis maupun lisensi) untuk mempermudah koneksi ke jaringan internet berbasis IPv6.

c. Metode Translasi (Penterjemahan Paket IPv6 ke IPv4 dan sebaliknya).

Metode ini tidak begitu umum dilakukan karena memerlukan perangkat tambahan untuk melakukan translasi Paket IPv4 ke IPv6 dan sebaliknya :
1. Application Layer Gateway untuk teknik NAT
2. Dual Stack Relay Router untuk teknik TCP/UDP Relay

Sumber

IPv6 Subnetting [BAB II]



http://www.ipstories.web.id/?s=ipv6&submit=Search


Dikarenakan IPv6 sangat banyak jumlahnya maka penulisan menggunakan format standard notasi Hexadecimal (Basis 16, dari 0-9 kemudian A-F) yang terdiri dari 8 pasang Octet dan dipisahkan oleh titik dua (colon) sesuai RFC2373 & RFC3177.
Satu pasang octet terdiri dari format 16 bit binary, sehingga keseluruhan 8 pasang octet berjumlah 128 bit.

Contoh penulisan IPv6 adalah sebagai berikut :

2404:0176:0251:AB64:6CD1:5A5E:727A:424A (total 128 bit binary)
424A (2 octet) = 100001001001010 (16 bit binary)

Penulisan juga dapat dipersingkat untuk pasangan octet 0 yang berurutan menggunakan teknik kompresi 0.

2404:0176:0251:0000:0000:0000:0000:0005 dapat ditulis menjadi : 2404:176:251::5

Bahkan untuk alamat IPv6 tertentu teknik ini sangat berguna sekali dalam mempersingkat pengalamatan yang panjang, misal :

0000:0000:0000:0000:0000:0000:0000:0001 atau 0:0:0:0:0:0:0:1 menjadi ::1
0:0:0:0:0:0:0:0 menjadi ::

Layaknya IPv4, IPv6 juga memenuhi kebutuhan CIDR/VLSM yang memungkinkan untuk pembagian dan pengalokasian IPv6 menjadi lebih spesifik untuk di routingkan secara kesatuan.

IPv6 juga memiliki kelas sebagaimana IPv4 diantaranya (Sumber IANA):

- Aggregatable Global Unicast Addresses dengan bit awal 001 (2000::/3)
- Link-Local Unicast dengan bit awal 1111 1110 10 (FE80::/10)
- Site-Local Unicast Addresses dengan bit awal 1111 1110 11 (FEC0::/10)
- Multicast Addresses : dengan bit awal 1111 1111 (FF00::/8)
- ::8 diperuntukkan bagi pengalamatan yang belum di defenisikan

Detail ketentuan alokasi IPv6 dari IANA selaku badan alokasi IP seluruh dunia untuk Registry (badan yang mengelolal alokasi IP untuk wilayah tertentu, misal APNIC untuk wilayah Asia Pasific), ISP, Client (Site) serta LAN, saat ini adalah sebagai berikut :

- Registry (APNIC/RIPE/ARIN) mendapatkan alokasi : /23
- ISP mendapatkan alokasi : /32
- Site IPv6 (customer ISP) mendapatkan alokasi : /48
- LAN (customer) mendapatkan alokasi : /64

Perhitungan jumlah IPv6 Address dapat melalui rumus : 2(128-bit prefix)
Dari data alokasi diatas :
(128-32)
- ISP mendapatkan : 2 IPv6 Address
(128-48)
- Setiap Customer (Site) mendapatkan : 2 IPv6 Address
(128-64)
- Setiap LAN mendapatkan : 2 IPv6 Address

Contoh alokasi IPv6 untuk client PT. IPVSIX JAYA : 2404:170:AAA0::/48
(128-48) (80)
- Jumlah IPv6 yang diperoleh : 2 = 2 IPv6 Address
- Bisa dipecah menjadi :

2 x subnet /49

2404:170:AAA0:0::/49
2404:170:AAA0:8::/49

4 x subnet /50

2404:170:AAA0:0::/50
2404:170:AAA0:4::/50
2404:170:AAA0:8::/50
2404:170:AAA0:C::/50

8 x subnet /51

2404:170:AAA0:0::/51
2404:170:AAA0:2::/51
2404:170:AAA0:4::/51
2404:170:AAA0:6::/51
2404:170:AAA0:8::/51
2404:170:AAA0:A::/51
2404:170:AAA0:C::/51
2404:170:AAA0:E::/51 dan seterusnya…

Pertanyaan & Jawaban :
Q : Kenapa 2404:170:AAA0:: adalah /48 ?
A : 2404:170:AAA0::/48 = 2404:0170:AAA0:0000:0000:0000:0000:0000/48
Sesuai dengan ketentuan sebelumnya IPv6 memiliki total 128 bit prefix.
Dan setiap pasang Octet (2404, misalnya) memiliki 16 bit.
Maka sampai pada AAA0 jumlah bit sudah mencapai 48 (16 x 3 pasang octet).
Q : Berapa /48 diatasya dan sebelumnya ?
A : Sebelumnya adalah : 2404:170:AA9F::/48 (Hex, sesudah 9F adalah A0)
Setelahnya adalah : 2404:170:AAA1::/48
Q : Apakah 2404:170:AAA0::/48 dapat digabung (aggregate) dengan
2404:170:AAA1::/48 menjadi satu prefix /47, /46 ?
A : Dapat, aggregasi ini menghasilkan 2404:170:AAA0::/47 atau
2404:170:AAA0::/46 yang didalamnya juga termasuk :
- 2404:170:AAA2::/48
- 2404:170:AAA3::/48

IPv6 pun mendukung system pengiriman packet data berbagai type diantaranya :

- Unicast (pengiriman paket data menggunakan unicast address hanya ke satu host),
- Multicast (pengiriman paket data menggunakan multicast address dari satu host ke banyak host)
- Broadcast (pengiriman paket data menggunakan broadcast address dari satu host ke beberapa host tertentu saja).
- Anycast (pengiriman paket data menggunakan anycast address ke host terdekat yang memiliki anycast address yang sama).

Perbandingan panjang prefix (prefix-length) IPv4 dan IPv6 beserta jumlah IP.
v4 v6 Jumlah IP
/32 /128 1
/31 /127 2
/30 /126 4
/29 /125 8
/28 /124 16
/27 /123 32
/26 /122 64
/25 /121 128
/24 /120 256
/23 /119 512
/22 /118 1024
/21 /117 2048
/20 /116 4096
/19 /115 8192
/18 /114 16384
/17 /113 32768
/16 /112 65536
/15 /111 131072
/14 /110 262144
/13 /109 524288
/12 /108 1048576
/11 /107 2097152
/10 /106 4194304
/9 /105 8388608
/8 /104 16777216
/7 /103 33554432
/6 /102 67108864
/5 /101 134217728
/4 /100 268435456
/3 /99 536870912
/2 /98 1073741824
/1 /97 2147483648
/0 /96 4294967296

Lanjutan version 6.

/95 8589934592
/94 17179869184
/93 34359738368
/92 68719476736
/91 1.37439E+11
/90 2.74878E+11
/89 5.49756E+11
/88 1.09951E+12
/87 2.19902E+12
/86 4.39805E+12
/85 8.79609E+12
/84 1.75922E+13
/83 3.51844E+13 dan seterusnya.

Sumber

[Belajar IPv6] Knowledge Share - IPv6 Preview [BAB I]

Numpang share link mengenai IPv6.
Sehubungan dengan habisnya IPv4 di APNIC.
http://adf.ly/8cA04

Alokasi IPv6 dan Implementasinya di Indonesia (no. 14 Dunia).
No. 2 di Asia setelah Jepang
Dan no 1 di Asia Tenggara

http://www.sixxs.net/tools/grh/dfp/

-----------------------------------------------------------------
IPv6 Preview [BAB I]

Kenapa IPv6 ?

Pertumbuhan internet yang sangat cepat baik di segi pemakai internet di rumah, perkantoran, sekolah, instansi-instansi maupun perkembangan pesat perangkat telekomunikasi yang sudah mulai menggabungkan IP ke dalam teknologinya (convergence) di seluruh dunia telah menyebabkan alamat IPv4 dengan format 32 bit binary yang sudah digunakan sejak awal keberadaan internet, tidak bisa lagi menampung kebutuhan pengalamatan internet setelah jangka waktu 20 tahun kedepan atau bahkan lebih cepat dari itu.
Demikian hasil riset dan perhitungan para pakar dari komunitas terbuka internet (The Internet Engineering Task Force , IETF) menyebutkan.
Dengan hanya 32 bit format address hanya bisa menampung kebutuhan :
32
= 2 IPv4 Address
= 4,294,967,296 IPv4 Address

Bayangkan, penduduk dunia saat ini adalah 6,5 Milyard.
Jika nantinya masing2 punya satu komputer, 1 Lapotop (mobile), 1 PDA, 2 Handphone (GSM & CDMA).
Lalu setiap perangkat butuh 1 IP address untuk bisa connected each other.
Berapa jumlah IP yang dibutuhkan untuk taruhlah 3 Milyard penduduk dunia (bahkan dari 4 milyard IP versi 4 ini tidak keseluruhan bisa dipakai )?

Kekurangan alamat IPv4 ini tentu saja akan membuat perkembangan internet khususnya komunikasi data akan menjadi terganggu karena tidak ada lagi IPv4 yang bisa dialokasikan untuk setiap computer, perangkat lain yang akan terkoneksi baik ke internet maupun antar perangkat.

Langkah antisipasi awal sebenarnya sudah dilakukan dengan teknologi NAT (Network Address Translation) yang bekerja dengan cara melakukan penterjemahan satu alamat IPv4 public ke banyak IPv4 private.
Sehingga satu alamat IPv4 public bisa dipergunakan untuk banyak perangkat yang akan terkoneksi ke internet.

Teknologi ini sudah berkembang luas namun memiliki keterbatasan untuk interkoneksi antar jaringan yang cukup besar dan berbeda kebijakan pengalamatan, berikutnya kebutuhan gateway untuk penterjemahan alamat, serta keterbatasan pengembangan protocol internet terutama untuk aplikasi yang langsung terhubung satu sama lain (peer-to-peer) seperti Peer-to-Peer Games dan VoIP misalnya yang membutuhkan IPv4 public untuk bisa bekerja dengan baik.

Pada tahun 1992 IETF selaku komunitas terbuka internet membuka diskusi para pakar untuk mengatasi masalah ini dengan mencari format alamat IP generasi berikutnya setelah IPv4 (IPng, IP Next Generation) yang kemudian menghasilkan banyak RFC (request for comments) yakni dokumen stardard yang membahas protocol, program, prosedur serta konsep internet IPv6.
Setelah melalui pembahasan yang panjang, pada tahun 1995 ditetapkan melalui RFC2460 alamat IP versi 6 sebagai IP generasi berikutnya (IPng) pengganti IP versi 4.
IPv6 ini menggunakan format 128 bit binary sehingga bisa menampung kebutuhan :
128
= 2 IPv6 Address
= 340,282,366,920,938,463,463,374,607,431,768,211,456 IPv6 Address


Pengembangan IPv6 sampai saat ini sudah dilakukan oleh banyak pihak yang ada di seluruh dunia termasuk Service Provider, Internet Exchange Point, ISP regional, Militer serta Universitas.

Untuk Indonesia sendiri sudah dialokasikan 61 prefix IPv6 untuk berbagai organisasi,
mobile operator, IXP dan ISP. Dan berdasarkan data statistic dari badan pengembangan dan penyedia tunnel broker SixXS ([url]www.sixxs.net[/url]) hingga saat ini yang aktif :

http://www.sixxs.net/tools/grh/dfp/all/?country=id

-----------------------------------------------------
Sumber

Monday, December 8, 2014

Tutorial Membuat Notepad Sederhana Menggunakan Java

Assalamu'alaikum pada kesempatan ini ane coba share cara membuat aplikasi notepad menggunakan java. Adapun beberapa fungsionalitas yang terdapat pada notepad ini adalah :

1. Menu File -->  new file, open, save, save as, print.
2. Menu edit -->  copy, paste, cut, remove
3. Menu Search -->  find, replace, select all.

Kurang lebih tampilannya seperti ini :

Gambar 1. Tampilan notepad

Gambar 2. Tampilan Menu File pada notepad




Nah seperti itu sob tampilannya. Terus bagaimana cara buatnya ? Anda penasaran ? sama saya juga :p
Oke langkah pertama persiapkan dulu editor pemograman javanya. Disini saya menggunakan netbeans 7.4 dengan jdk7.
Setelah itu buat rancangan logika, objek apa saja yang akan digunakan dalam aplikasi notepad. Hmm kira-kira objeknya apa aja ? Nah objeknya itu adalah fungsionalitas (sudah disebutkan di paragraf pertama) yang akan kita buat dalam notepadnya. Jika telah terbayang objek apa saja yang akan dibuat baru kita mulai koding.
Langkah pertama buat project baru. Pasti pada bisa dong, jika belum lihat link ini buat project baru di netbean.  Jika sudah kita akan membuat desain notepadnya, so tambahkan kelas jframe form (Disini ane beri nama kelas Interface). Ada beberapa komponen yang dibutuhkan untuk membuat objeknya. Berikut adalah komponennya : 
Gambar 3. Komponen yang diperlukan untuk desain notepad
So pada contoh gambar di atas dibutuhkan : 
1. jMenuBar 1 buah untuk menampung Menu File, Edit, dan search.
2. jMenu 3 buah (untuk Menu File, Menu Edit, Menu Search)
3. jMenuItem untuk Menu File 6 buah (New, Open, Save, Save as, Print, Close)
4. jMenuItem untuk Menu Edit 5 buah (Copy, paste, Cut, Remove)
5. jMenuItem untuk Menu Search 3 buah (Find, Replace, select all) 
6. jTextArea 1 buah
Sebenarnya segitu aja sudah cukup untuk membuat desain notepadnya, tapi jika ingin mempercantik desain notepadnya tambahkan :
jToolBar 3 buah (Untuk Menu File, edit, dan search). Kemudian pada masing-masing jToolBar tambahkan jButton sesuai dengan fungsionalitas apa yang ingin ditampilkan dalam jToolBar. Kalau pada contoh untuk jToolBar 1 ditampilkan fungsionalitas dari Menu File (New, Open, Save, dan print). jToolBar 2 menampilkan fungsionalitas Menu Edit (Copy, Paste, Cut, remove). jToolBar 3 menampilkan fungsionalitas Menu Search (find, replace, replace all).  
Jika desain telah selesai saatnya koding. Untuk koding ini sebetulnya setiap orang memiliki algoritma masing-masing. Tapi disini akan dibahas algoritma yang ane gunakan. Disini akan dijelaskan algoritma setiap fungsionalitasnya. Namun sebelumnya kita samakan dulu nama variabel dari setiap objeknya. Jika ada yang tidak tahu bagaimana cara menggantinya silahkan pelajari di link ini. Berikut adalah nama variabel yang ane gunakan : 
Gambar 4. Nama variabel yang digunakan untuk setiap objek
Jika sudah sama langsung saja buat kodingannya. Diawali dari : 
1. Menu New File. 
Algoritmanya :
jika new file di klik maka textArea akan dikosongkan. Namun jika pada textArea terdapat isi / tulisan maka akan muncul kotak dialog yang menyatakan "Apakah tulisan akan disimpan ?". Jika memilih opsi YES maka akan disimpan jika NO maka textArea langsung dikosongkan.
Source codenya :
Pada lembar desain double-click  menuItem atau button New File. Maka akan masuk ke dalam lembar source. Buat metod baru dengan nama NewFile( ).
  

private void btnNewActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
        NewFile();    
    } 

Isi dari metod NewFile :

private void NewFile() {
        if (area.getText().equals("")) //jika textArea kosong
          {
          NewFile(); //maka akan dipanggil metod cek_file_baru
          }
          else {
               int choice=JOptionPane.showConfirmDialog(this,"Apakah anda ingin menyimpan"); //dipanggil kotak dialog yang memiliki opsi
               if(choice==JOptionPane.YES_OPTION) //jika diklik opsi YES
                 {
                   //Maka akan dipanggil metod di bawah ini :  
                   save();
                   check_NewFile();
                 }
               else { //jika diklik opsi NO
                     check_NewFile();
               }
          }
    }

Metod check_NewFile berfungsi untuk mengosongkan textArea. Sedangkan metod save() akan dijelaskan pada poin nomor 2. Ini sourcenya :


 private void check_NewFile() {
        area.setText(""); //untuk mengosongkan textArea
        setTitle("Untitled"); //merubah judul program menjadi Untitled
    }

Dalam metod NewFile memanggil metod sim

2. Save dan Save as
Algoritmanya :
Menu save as akan dieksekusi jika file belum tersimpan sebelumnya. Ketika save as diklik maka akan muncul kotak dialog untuk menyimpan file. Sedangkan menu save akan dieksekusi jika file telah tersimpan sebelumnya namun jika file belum disimpan maka akan terbuka kotak dialog untuk menyimpan file.
Source codenya :

Import dulu library berikut :

 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;

Tambahkan / inisialisasikan dulu 2 variabel berikut :

      private File file;
      private boolean is_saved=true;

double klik menuItem / button save as, Isikan :.

    private void jMenuSaveasActionPerformed(java.awt.event.ActionEvent evt) {                                            
        saveas();
    }   

double klik menuItem / button save, Isikan : .

 private void jMenuSaveActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (file== null) //jika file belum tersimpan sebelumnya
        {
            saveas();
        }
        else //jika file telah tersimpan
        {
            save();
        }     
    }    

Isi dari metod save ( ) dan saveas ( ).

 private void save() {
         if(file!=null) //jika file ada dalam difolder yang dituju
        {
            FileWriter write_file = null; //deklarasi variabel write_file dengan nilai null
            try {
                write_file = new FileWriter(file);
                write_file.write(area.getText()); //memasukan isi tulisan dari textArea ke dalam variabel write_file
                write_file.flush();
                is_saved=true;
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(this,"Sorry existing error");
            } finally {
                try {
                    write_file.close();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
        else //jika file belum ada dalam direktori maka akan dipanggil metod saveas()
        {
            saveas();
        }
    }

    private void saveas() {
        JFileChooser fileChooser=new JFileChooser("."); //menampilkan box untuk membuka direktori 
        int choice=fileChooser.showSaveDialog(this); //deklarasi variabel choice untuk digunakan dalam kondisi if
        if(choice==JFileChooser.APPROVE_OPTION) //jika memilih opsi OK
        {
            File myfile = fileChooser.getSelectedFile(); 
            file=new File(fileChooser.getSelectedFile().getPath()+".txt");
            setTitle(file.getPath());
            save();
        }
    }
3. Open File
Untuk open file langsung saja ke source codenya. Tapi sebelumnya pastikan library berikut telah diimport :

import java.io.BufferedReader;
import java.io.File; //untuk variabel File a
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JFileChooser;//Komponen yang digunakan untuk membuka dialog direktori komputer yang berisi file dan folder 
import javax.swing.JOptionPane;


Tambahkan / inisialisasikan juga variabel ini :

     private File a;

Selanjutnya double click pada menuItem Open / button Open. Tambahkan metod buka ( ).

 private void jMenuOpenActionPerformed(java.awt.event.ActionEvent evt) {                                          
        buka();
    } 

Isi dari metod buka ( ) adalah :

 private void buka() {
        JFileChooser pilihfile=new JFileChooser("."); //untuk membuka dialog direktori tempa file berada, sedangkan tanda(".") supaya ketika kotak dialog terbuka maka path / default direktorinya berada pada project aplikasinya. Jika tidak diberi tanda "." maka default direktorinya berada di direktori document
        int pilih1=pilihfile.showOpenDialog(this);//deklarasi variabel pilih1 untuk membuka kotak dialog direktori
        if(pilih1==JFileChooser.APPROVE_OPTION) //jika user memilih file kemudian klik open
        {
            FileReader baca_file = null;
            try {
                a = pilihfile.getSelectedFile();
                setTitle(a.getPath());
                baca_file = new FileReader(a);
                BufferedReader br = new BufferedReader(baca_file);
                area.setText("");
                while (br.ready()) {
                    area.append(br.readLine() + "\n");
                }
            }catch (FileNotFoundException ex) {
                JOptionPane.showMessageDialog(this,"Cannot find the file");
            }
            catch (IOException ex) {
                JOptionPane.showMessageDialog(this,"Cannot read the file data");
            }
        }
    }
4. Print

import dulu library berikut : 

import java.awt.print.PrinterException;
import javax.swing.JOptionPane;

double-click pada menuItem / button Print, tambahkan kode :

        try {
            area.print();
        } catch (PrinterException ex) {
            JOptionPane.showMessageDialog(this,"Error!");
        }
5. Close

Pada menu close ini algoritmanya hampir sama dengan new file. Ketika tombol ini diklik, sedangkan dalam textArea terdapat isi / tulisan maka akan muncul kotak dialog yang menanyakan apakah ingin disimpan / tidak ? jika textArea dalam keadaan kosong maka aplikasi langsung akan di close.

Source codenya :
Pastikan libary yang terdapat pada Menu Save / save as telah diimport. Kemudian double-click menuItem close dan tambahkan metod close ( ).
isi dari metod close ( ) :

private void close() {
        if (area.getText().equals(""))
        {
            System.exit(0);
        }
        else {
             int choice=JOptionPane.showConfirmDialog(this,"Apakah anda ingin menyimpan");
             {
                 if(choice==JOptionPane.YES_OPTION)
                 {
                     save();
                     System.exit(0);
                 }
                 else {
                 System.exit(0);
                }            
             }
        }
    }
 
6. Copy,Cut,Paste,Remove
Double-click untuk masing masing tombol, kemudian tambahkan code berikut sesuai fungsionalitas tombolnya.

//tombol cut :
 private void jMenuCutActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        area.cut();
    } 
//tombol copy :
    private void jMenuCopyActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        area.copy();
    } 
//tombol paste : 
    private void jMenuPasteActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        area.paste();
    } 
//tombol remove
    private void jMenuRemoveActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
        area.remove();
    }                      
7. Select all, replace, find.

Untuk fungsionalitas ini ane buat kelas jFrame form baru (ane beri nama kelas Search), karena ada tampilan khusus. Seperti ini tampilannya :

Gambar 5. Tampilan menu search
Komponen yang dibutuhkan adalah :
a. 2 jLabel
b. 2 jtextField
c. 5 jButton

Sebelum kita koding samakan dahula nama variabel untuk setiap objeknya, ini nama variabel yang ane gunakan :

Gambar 6. Nama variabel pada objek di kelas Search

Nah karena button find, replace, dan select all ada di kelas yang berbeda yaitu kelas Interface jadi harus ada kerjasama antara kelas yang memanggil form / tampilan menu Search (kelas Search) dengan kelas yang menampilkan button (kelas Interface). Jadi langkah pertama dalam kodingnya kita awali di kelas Search terlebih dahulu.
Inisialisasikan / tambahkan variabel berikut :

    Interface page; //inisialisasi / memanggil kelas Interface
    int startIndex=0;             

Setelah itu doube klik masing-masing button (find, find next, replace, replace all). Kemudian tambahkan metod baru, yaitu  :
1. metod findAll ( )   --> untuk button find
2. metod findNext ( ) --> untuk button find next
3. metod replace ( ) --> untuk button replace
4. metod replaceAll ( ) --> untuk button replace all

Berikut ini adalah isi dari metod-metod di atas :

//untuk button find
 private void btnFindActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        findAll();
    } 
//untuk button find next
    private void btnFindNextActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
        findNext();
    }
//untuk button replace
 private void btnReplaceActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        replace();
    } 
//untuk button replace all
    private void btnReplaceAllActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
        replaceAll();
    }                                             

Setelah itu pada kelas Interface kita lakukan pemanggilan kelas Search. Supaya ketika menuItem / button find dan replace yang terdapat dalam kelas Interface bisa berfungsi.

Untuk source codenya tinggal double-click button find dan replace pada kelas Interface. Kemudian tambahkan berikut :

//untuk button find
 private void btnFindActionPerformed(java.awt.event.ActionEvent evt) {                                        
        Search s = new Search(); //memanggil kelas Search
        s.setVisible(true); //menampilkan form pada kelas Search
    } 
//untuk button replace
    private void btnReplaceActionPerformed(java.awt.event.ActionEvent evt) {                                           
        Search s = new Search(); //memanggil kelas Search
        s.setVisible(true); //menampilkan form pada kelas Search
    }                                            

Sedangkan untuk button select all, double-click button nya kemudian tambahkan kode berikut :

    private void btnSelectAllActionPerformed(java.awt.event.ActionEvent evt) {                                             
         area.selectAll();
    }                                              
Oke demikian penjelasan singkatnya. Silahkan temen-temen coba gabung-gabungkan. Yang ingin projectnya silahkan komen dulu dan tuliskan alamat emailnya.  

Saturday, December 6, 2014

Batas Nilai di Belakang Koma dengan Java


Misalnya hasil dari pembagian 10/3 adalah 3.33333333333...dst .
hal ini bisa mengakibatkan tampilan yang jelek, untuk mengantisipasinya bisa dilakukan dengan menampilkan beberapa angka saja yang ingin ditampilkan.




Berikut adalah source code dengan java untuk menampilkan sesuai dengan yang diinginkan.

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import javax.swing.JOptionPane;

class Pembagian{
 public static void main(String[] args){
 
 String nilai1String, nilai2String;
 int nilai1, nilai2;
 double hasilBagi;
 double hasilBagiDenganBatas;

 nilai1String = JOptionPane.showInputDialog("Masukkan Nilai 1 :");
 nilai1 = Integer.parseInt(nilai1String);

 nilai2String = JOptionPane.showInputDialog("Masukkan Nilai 2 :");
 nilai2 = Integer.parseInt(nilai2String);

 hasilBagi = nilai1 /(double)nilai2;


 JOptionPane.showMessageDialog(null, "3 Angka di belakang koma :  " + String.format("%.3f",hasilBagi) +
     "\nTanpa Batas :  " + hasilBagi);
  
 }
}

Jalankan progrma java Anda, kemudian akan ditampilkan hasilnya seperti pada gambar berikut :


Pada program java yang Anda buat, bisa mengganti angka 3 terserah berapa angka yang ingin ditampilkan:

String.format("%.3f",hasilBagi)
 
Sumber