program kamus sederhana menggunakan java

kali ini saya akan coba sharing cara membuat kamus sederhana, materi yang perlu dipelajari adalah Struktur data Map / Collection, Swing, dan Input /Output dalam membaca karakter dalam file. oke mari kita lakukan sekarang, nanti outputnya adalah sebagai berikut

kamus sederhana

terdapat textfield(form) untuk mengisi kata kunci, jika menekan [Enter] maka akan keluar artinya. jika tidak ada dalam kamus maka akan keluar gambar sebagai berikut

jika ditekan tombol [add]

lalu anda ketikkan artinya dan tekan tombol [save], maka kata dan arti akan tersimpan

dalam database yang berupa file berekstensi .txt

mari kita mulai.

  • membuat project di netbeanΒ  beri nama LiLKamus atau apa saja
  • membuat 2 kelas java yaitu KamusMap.java dan KamusApp.java, KamusMap.java digunakan untuk Logic atau proses dari program, sedangkan KamusApp.java digunakan sebagai interface (GUI).
  • dalam project LiLKamus buat kelas dengan nama KamusMap.java, berikut ini adalah kodenya[sourcecode language=”java”]
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.StringTokenizer;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    /**
    *
    * @author WIN-7
    */
    public class KamusMap {
    //struktur data map
    Map<String, String> dic = new HashMap<String, String>();
    //object file untuk menyimpan dan membaca data kata – kata
    File f = new File("dataBase.txt");
    BufferedWriter bw1;
    BufferedReader br;
    StringTokenizer token;

    //methode untuk menambah data kamus
    public boolean addData(String key, String val) {
    //variabel penentu sukses atau tidak operasi penyimpanannya
    boolean succes = false;
    try {
    bw1 = new BufferedWriter(new FileWriter(f, true));
    dic.put(key, val);
    bw1.write(key + "="+val+"\n");
    bw1.close();
    succes = true;

    } catch (IOException ioe) {
    ioe.printStackTrace();
    }

    return succes;
    }

    //method untuk membaca data kamus dari sebuah file
    public final void bacaData(File f) {

    try {
    if (!f.exists()) {
    f.createNewFile();
    }
    br = new BufferedReader(new FileReader(f));
    String dataBase;
    String key;
    String value;
    int car = 0;
    while ((car = br.read()) != -1) {
    dataBase = (char) car + br.readLine();
    token = new StringTokenizer(dataBase, "=");
    key = token.nextToken();
    value = token.nextToken();
    dic.put(key, value);
    }
    //System.out.println(dic);
    br.close();
    } catch (IOException e) {
    e.printStackTrace();
    }

    }
    //konstruktor(pembuat object)
    public KamusMap() {
    String[] defaultKey = {"love", "i", "you"};
    String[] defaultValue = {"cinta, cinta, cinta", "saya, aku, abdi", "kamu, dikau, kau, panjenengan"};
    for (int i = 0; i < defaultKey.length; i++) {
    dic.put(defaultKey[i], defaultValue[i]);
    }

    bacaData(f);

    }

    //untuk mendapatkan artikata dari kata kunci yang diketikkan
    public String getArti(String k) {
    String arti = dic.get(k);
    if (arti == null) {
    arti = "maaf, kata tidak ditemukan";
    }
    return arti;
    }

    public static void main(String[] args) {
    new KamusMap();
    }
    }
    [/sourcecode]

  • setelah kode logic / controlnya sudah selesai dibuat maka sekarang membuat interface / tampilannya nya, sederhana saja dengan menggunakan netbean,buatlah kelas baru pada project LiLKamus dengan klik menu New File -> Swing GUI Form -> Jframe From. lalu desainlah sesuai yang ada pada gambar berikut

dengan menggunakan netbean, anda bisa langsung drag n drop saja komponen yang anda perlukan dalam membuat sebuah GUI. jangan lupa untuk rubah nama variabel komponen sesuai dengan yang kita inginkan, berikut ini adalah daftar nama komponennya

JTextArea : value

JLabel : label_status

Jbutton : btn_cancel , btn_save_data, btn_add_opt

JTextField : key

JPanel : panel

setelah desain jadi, kita tambahkan kode2 dalam source codenya sehingga menjadi seperti ini

[sourcecode language=”java”]

import java.awt.Color;
import java.awt.event.KeyEvent;
import java.util.Locale;
import java.util.Random;
import java.util.Timer;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author WIN-7
*/
public class KamusApp extends javax.swing.JFrame {
Random r = new Random();
KamusMap k = new KamusMap();
boolean add_option = false;
boolean add_data = false;
String[] status={"berhasil, boleh tambah lagi","oke.. berhasil lagi","guuud.. lagi ?","waaah.. banyak yg masuk","oke.. oke.. lagi ?","LiL Kamu_s by. Wero ^_^"};
int statusInt;
/** Creates new form KamusApp */
public KamusApp() {
initComponents();
btn_data_visible(add_data);
btn_opt_visible(add_option);
clear();
setVisible(true);
int loop=0;
while(loop<800){
setLocation(loop, 300);
loop++;
}
while(loop>400){
setLocation(loop, 300);
loop–;
}
}

public void btn_opt_visible(boolean val) {
btn_add_opt.setVisible(val);
}

public void btn_data_visible(boolean val) {
btn_save_data.setVisible(val);
btn_cancel.setVisible(val);
}

public void clear() {
key.setText("");
value.setText("");
label_status.setText(status[status.length-1]);
value.setEditable(false);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
new KamusApp().setVisible(true);
}
});
}
}
[/sourcecode]

setelah itu tambahkan method – method untuk menangani event (klik mouse, key press) dengan cara sebagai berikut :

  • klik kanan pada textField (key) -> Events->Key->KeyPressed, lalu lengkapi kodenya sehingga menjadi seperti ini

[sourcecode language=”java”]
private void keyKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
if(!add_data){
String kunci = key.getText().toLowerCase();
String arti = k.getArti(kunci);
value.setText(" " + arti);
if (arti.startsWith("maaf")) {
add_option = true;
} else {
add_option = false;
}
btn_opt_visible(add_option);
btn_add_opt.requestFocus();

}
}

}
[/sourcecode]

  • klik kanan pada textArea (value) ->Events->Mouse->MouseClicked dan lengkapi kodenya

[sourcecode language=”java”]
private void valueMouseClicked(java.awt.event.MouseEvent evt) {
if(value.getText().endsWith("artinya disini"))
value.setText("");
value.setEditable(add_data);
}
[/sourcecode]

  • lalu klik kanan pada Button (cancel) -> Events->Action->ActionPerformed dan lengkapi kodenya

[sourcecode language=”java”]
private void btn_cancelActionPerformed(java.awt.event.ActionEvent evt) {
add_option = false;
add_data = false;
btn_opt_visible(add_option);
btn_data_visible(add_data);
btn_cancel.setText("cancel");
clear();
}
[/sourcecode]

  • lakukan hal yang sama pada Button (add) dan lengkapi kodenya

[sourcecode language=”java”]

private void btn_add_optActionPerformed(java.awt.event.ActionEvent evt) {
add_data = true;
add_option = false;
btn_data_visible(add_data);
btn_opt_visible(add_option);
value.setText("ketik artinya disini");
value.setEditable(add_data);
}
[/sourcecode]

  • lakukan hal yang sama pada Button (save) dan lengkapi kodenya

[sourcecode language=”java”]
private void btn_save_dataActionPerformed(java.awt.event.ActionEvent evt) {
if(! value.getText().equals("")){
if(! key.getText().equals("")){
if(statusInt==status.length-2) statusInt=0;
String keys = key.getText().trim().toLowerCase();
String vals = value.getText().trim();
clear();
if (k.addData(keys, vals)) {
label_status.setText(status[statusInt]);
}
statusInt++;

btn_cancel.setText("back");
key.requestFocus();
}
}
}
[/sourcecode]

  • setelah itu jangan lupa untuk memberikan event tambahan berikut pada button (add) dengan cara klik kanan -> Events-> Key->KeyPressed dan lengkapi kodenya sebagai berikut.

[sourcecode language=”java”]
private void btn_add_optKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
add_data = true;
add_option = false;
btn_data_visible(add_data);
btn_opt_visible(add_option);
value.setText("ketik artinya disini");
value.setEditable(add_data);
}
}
[/sourcecode]

oke sudah sejauh ini, ada pertanyaan? hehe santai dulu.. ngopi dulu gan… rehat.. ngaso..

oh iya yang terakhir sebagai tambahan saja, klik kanan pada komponen JFrame -:> Events -:> Mouse -:> MouseEntered dan lengkapi kodenya

[sourcecode language=”java”]
private void formMouseEntered(java.awt.event.MouseEvent evt) {
Color[] col = {Color.MAGENTA,Color.LIGHT_GRAY,Color.CYAN,Color.GRAY,Color.GREEN,Color.PINK,Color.WHITE,Color.YELLOW};
int c = r.nextInt(col.length);
panel.setBackground(col[c]);
}
[/sourcecode]

silahkan di run (shift + f6)
hehe saya rasa sudah cukup segitu aja, terimakasih sudah menyimak hehe

90 Comments

Add a Comment

Your email address will not be published. Required fields are marked *