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
    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();
      }
    }
    
  • 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


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);
      }
    });
  }
}

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
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();

    }
    }

  }
  • klik kanan pada textArea (value) ->Events->Mouse->MouseClicked dan lengkapi kodenya
private void valueMouseClicked(java.awt.event.MouseEvent evt) {
      if(value.getText().endsWith("artinya disini"))
      value.setText("");
      value.setEditable(add_data);
  }
  • lalu klik kanan pada Button (cancel) -> Events->Action->ActionPerformed dan lengkapi kodenya
 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();
  }
  • lakukan hal yang sama pada Button (add) dan lengkapi kodenya

  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);
  }
  • lakukan hal yang sama pada Button (save) dan lengkapi kodenya
 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();
    }
    }
  }
  • setelah itu jangan lupa untuk memberikan event tambahan berikut pada button (add) dengan cara klik kanan -> Events-> Key->KeyPressed dan lengkapi kodenya sebagai berikut.
 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);
    }
  }

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

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]);
  }

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

About these ads

48 comments on “program kamus sederhana menggunakan java

    • hehe terimakasih, ini program masih sangat2 sederhana, cuma mau kasih contoh aja salah satu cara utk bikin kamus itu bisa kayak gitu hehe. maap kalo gak bagus

    • wah berlebihan gan.. blog ane masih payah gan soalnya blm sempet nulis semua yg mau ane tulis hhe.. doain aja smg konsisten hhe thx gan dah mampir.. silahkan kasih saran gan

  1. Gan, source nya tolong diupload juga dunk….
    Saya udah mencoba tapi masih bungung.
    Kalau ada source nya kan bisa dibuat perbandingan antara tutorial dan source nya.
    Trims…

    • hehe sori gan, ane baru buka internet hhe lagi pulkam.. ini menurut saya sih udah lengkap sourcenya, kalo mau link download project nya sih dulu saya udah upload di mediaFire tapi saya lupa link nya.. saya catat di laptop saya. laptop saya lagi gak sama saya, nanti gan kalo laptop saya udah balik saya kasih link nya,, hehe maaf ya

    • di project explorer, klik kanan file lalu java lalu pilih compile, nanti otomatis jika tidak ada eror akan membuat file.class. bisa dilihat di folder tempat project tersimpan. pokoknya setiap compile , akan membuat file.class. atau kalau bingung di run saja file nya . nanti akan membuat file . class

    • aku ga pake database server. cuma pake file txt. kalo mau pake database juga bisa. dan caranya ga jauh beda cukup bikin 1 table bisa. dengan 3 kolom. yaitu id, kata, arti kata. abis itu tinggal pake query. biasa untuk insert dan update delete atau select.

  2. help me..
    setelah sukses tiba2 ditinggal 1 mlm g bs di run.,.,
    di cek koding g ada perubahan.,.,
    buat dari awal ttp g bs/././
    bantuin dong bang./

  3. Mas boleh minta tolong ajarin bikin SUB menu g?
    contoh misal ada 3 JButton dan saya kasih nama
    1. Rumus Persegi 2. Rumus SegiTiga 3. Rumus Balok , nah kemudian saya mau dari masing” tersebuh ada isinya misal isinya LUAS dan KELILING…. dan dari masing” tersebut ketika di KLIK keluar rumusnya sesuai yg awal kita klik..

    Exam. kita klik Persegi, kemudian muncul pilihan luas/ keliling, kita pilih keliling dan kemudian keluar rumus keliling tersebut gt mas? makasih..

    • menu? bisa pake JMenu and untuk sub menunya pake MenuItem.. kalo mau ada menu dbawah menu tinggal tambah JMenu. tinggal drag and drop di netbeans. kira2 gt.

    • jadi, ente coba masukin datanya kedatabase atau simpan dalambentuk file(.txt atau .properties atau. dat atau xml)kalo pengen mudah sih pake databse tapi kurang fleksible

    • secara logika gak jauh beda, cuma CRUD(create update delete) biasa, kamu
      bikin aja databasenya dulu lalu tabel kata indonesia dengan kolom2 untuk kata dan artinya dalam bahasa lain.
      1. sesuaikan aja, semua yang store ke file .txt kamu ubah jadi insert ke DB,
      2. yg membaca file .txt jadi operasi select.
      3. selebihnya tinggal sesuaikan operasi UI nya saja

  4. gan tolong upload savean projectny dong ane udah mentok nyoba tapi banyak errorny..pls gan..
    trimaksih sbelumny…

silahkan ditanggapi :)

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s