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
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
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map;importjava.util.StringTokenizer;importjava.util.logging.Level;importjava.util.logging.Logger;/**** @author WIN-7*/publicclassKamusMap {//struktur data mapMap<String, String> dic =newHashMap<String, String>();//object file untuk menyimpan dan membaca data kata - kataFile f =newFile("dataBase.txt");BufferedWriter bw1;BufferedReader br;StringTokenizer token;//methode untuk menambah data kamuspublicbooleanaddData(String key, String val) {//variabel penentu sukses atau tidak operasi penyimpanannyabooleansucces =false;try{bw1 =newBufferedWriter(newFileWriter(f,true));dic.put(key, val);bw1.write(key +"="+val+"\n");bw1.close();succes =true;}catch(IOException ioe) {ioe.printStackTrace();}returnsucces;}//method untuk membaca data kamus dari sebuah filepublicfinalvoidbacaData(File f) {try{if(!f.exists()) {f.createNewFile();}br =newBufferedReader(newFileReader(f));String dataBase;String key;String value;intcar =0;while((car = br.read()) != -1) {dataBase = (char) car + br.readLine();token =newStringTokenizer(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)publicKamusMap() {String[] defaultKey = {"love","i","you"};String[] defaultValue = {"cinta, cinta, cinta","saya, aku, abdi","kamu, dikau, kau, panjenengan"};for(inti =0; i < defaultKey.length; i++) {dic.put(defaultKey[i], defaultValue[i]);}bacaData(f);}//untuk mendapatkan artikata dari kata kunci yang diketikkanpublicString getArti(String k) {String arti = dic.get(k);if(arti ==null) {arti ="maaf, kata tidak ditemukan";}returnarti;}publicstaticvoidmain(String[] args) {newKamusMap();}}
- 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
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); } }); }} |
- 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); } } |
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]); } |
hehe saya rasa sudah cukup segitu aja, terimakasih sudah menyimak hehe
Tidak ada komentar:
Posting Komentar