16/10/13

program kamus sederhana menggunakan java

http://alqaa.wordpress.com/2012/03/22/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
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
1
2
3
4
5
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
1
2
3
4
5
6
7
8
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
1
2
3
4
5
6
7
8
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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.
1
2
3
4
5
6
7
8
9
10
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
1
2
3
4
5
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

Tidak ada komentar:

Posting Komentar