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