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

78 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…

  5. mas alka, mau tanyak nih udah saya ikutin mulai dari awal sampai akhir, pas di Run kok gak mau kluar ya programnya ? cuma kluar tulisan build succesfull doang -_-

  6. gan kalau inputan textfield nya satu
    terus tekan enter inputannya bisa masuk dalam text area

    misal ni
    - inputan textfiel :
    - output textarea :
    inputan textfield 1
    inputan textield 2 dst

    biasanya cm bsa set 1 inputan aja dr 1 text field
    tapi gimn caranya bisa output banyak dr 1 textfiel

    • ada beberapa cara : 1. buatkan struktur data List dan StringBuffer atau StringBuilder, bisa pake ArrayList lis untuk menyimpan data setiap kali di input lalu di lakukan iterasi menggunakan for(String input : lis ) {stringbuilder.append(input).append(“\n”)} lalu set text untuk text area dengan textArea.setText(stringbuilder.toString()) ; cara pertama lbh mudah jikan inputan akan digunakan pada proses selanjutnya. 2. langsung di append di text Area.

  7. mat pagi gan….
    makasih sebelumnya…
    aq mau tanya gan, apa kita langsun pake database mysql sbgai koneksinya itu bisah kah? soalnya notepad tdk ada primary key itu gmn ban?

  8. mas alka,kalo pas pengen simpan artinya di value kok ngga bisa panjang ya tulisannya?maksimal berapa kata ini mas?

    • maksudnya ini pas di value jtextarea itu bisanya cuma satu baris,pas dibikin 2 baris kok error ya mas…mohon bantuannya :(

      • errornya apa ? klu ada error sebaiknya errornya di tulis juga. mungkin karena itu dibaca di text file, sebaiknya sih pake database biar gampang nge save dan ngambil valuenya.

        2014-03-15 0:27 GMT+07:00 Belajar Java :

        >

  9. errornya seperti ini mas
    Exception in thread “AWT-EventQueue-0″ java.util.NoSuchElementException
    at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
    at KamusMap.bacaData(KamusMap.java:63)
    at KamusMap.(KamusMap.java:82)
    at KamusApp.(KamusApp.java:28)
    at KamusApp$8.run(KamusApp.java:299)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

    Mohon pencerahannya T_T

    • iya itu karena dia membaca data kata2 nya dari file txt yang di setting, antara kata asli dan kata artinya dipisah dengan tanda =, dan harus satu baris tidak =boleh ada enter. silahkan buat yang pakai enter kalau mau ada enter dengan karakter \n

  10. Mas alka mau nanya kalau file java ini nantinya berekstensi jar ya jadinya?dan bisa tidak dipakai di android?

  11. berarti listing yg mana diganti dengan apa mas kalo mau bisa ada enter dengan karakter?mohon maaf karena saya masih awam dengan java jadi banyak nanya dengan para expertnya :)

    • listing yang ada kelas tokenizer nya, diganti dengan yang kamu butuhkan.. punyaku cuma contoh saja, pelajari cara read / write file dengan java.

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 )

Google+ photo

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

Connecting to %s