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 :
Isi dari metod NewFile :
Metod check_NewFile berfungsi untuk mengosongkan textArea. Sedangkan metod save() akan dijelaskan pada poin nomor 2. Ini sourcenya :
Dalam metod NewFile memanggil metod sim
2. Save dan Save as
Selanjutnya double click pada menuItem Open / button Open. Tambahkan metod buka ( ).
Isi dari metod buka ( ) adalah :
double-click pada menuItem / button Print, tambahkan kode :
Read More..
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).
Berikut ini adalah video tutorial cara menambahkan komponen-komponen di atas.
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( ).
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.
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 :
Tambahkan / inisialisasikan dulu 2 variabel berikut :
double klik menuItem / button save as, Isikan :.
double klik menuItem / button save, Isikan : .
Isi dari metod save ( ) dan saveas ( ).
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 :
Tambahkan / inisialisasikan juga variabel ini :
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 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 :
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 ( ) :
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 :
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 :
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 :
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 :
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 :
Sedangkan untuk button select all, double-click button nya kemudian tambahkan kode berikut :
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 |
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.