Nulis Karakter Arab dengan Java
Nov 20
Pada dasarnya bahasa (Cina,jepang,arab,yunani,dll) apapun di java akan dengan sangat mudah tuk diaplikasikan. Kuncinya ada pada kata UNICODE, berikut istilah unicode yang ane lihat di wiki:
“Unicode adalah suatu standar industri yang dirancang untuk mengizinkan teks dan simbol dari semua sistem tulisan di dunia untuk ditampilkan dan dimanipulasi secara konsisten oleh komputer.”
Nah unicode itu adalah kumpulan dari seluruh karakter dan simbol yang ada dan yang pernah ada di muka bumi ini.Dengan menggunakan Unicode, tidak hanya huruf Latin yang dapat dicakup, melainkan juga huruf – huruf yang digunakan oleh berbagai bangsa seperti Jepang, Korea, dan arab, dll. Unicode dapat menampung berbagai macam huruf karena setiap karakter ditampung dengan 16 bit (ASCII standar hanya menggunakan 7 bit). Kabar gembiranya adalah Java tidak menggunakan himpunan kode ASCII untuk menyatakan karakter, melainkan memakai himpunan Unicode itu. Jadi karakter dan simbol yang dapat ditampung sebesar 2 pangkat 16.
Dalam artikel ini q bwt contoh gimana menuliskan huruf arab pada komponen textbox dan textpane dalam java dengan keyboard yang biasa qt pake. Screenshoot programnya akan tampak seperti ini

Di sini qt hanya maen-maen pada method “processKeyEvent” dari sebuah komponen dalam java. Ketika qt mengetikkan sesuatu pada keyboard maka method inilah yang nantinya dipanggil. Nah dari situlah nantinya qt tanggkap huruf apa yang diketik kemudian menggantinya dengan huruf arab yang telah didefinisikan pada sebuah file *.mus
Dalam contoh program ini akan ada 5 file diantaranya adalah:
Arabic.mus merupakan tabel pasangan karakter yang ada dikeyboard dengan arabnya.
UserKeyMap.java bertugas untuk meload karakter dan simbol dari file *.mus
TextField.java merupakan kelas turunan dari TextField dan telah di overried pada method processKeyEvent nya.
TextPane.java
app.java berupakan kelas main nya…
Dan berikut method processKeyEvent yang udah dimodifikasi dari kelas TextField.java
@Override
protected void processKeyEvent(KeyEvent e) {
int pos;
String previous_chars;
char accented_character;
char deadkey;
String replacement;
int the_key_code = e.getKeyCode();
int the_key_id = e.getID();
char[] typed_key_array = {0};
typed_key_array[0] = e.getKeyChar();
typed_key = e.getKeyChar();
if (the_key_code == KeyEvent.VK_ENTER &&
the_key_id == KeyEvent.KEY_RELEASED) {
replaceSelection("n");
e.consume();
return;
} else
if (the_key_code == KeyEvent.VK_TAB) {
if (the_key_id == KeyEvent.KEY_PRESSED) replaceSelection("t");
e.consume();
requestFocus();
return;
} else if (UserKeyMap.isEnabled()) {
if (typed_key < '!' || typed_key > '~') {
super.processKeyEvent(e);
if (the_key_code != KeyEvent.VK_SHIFT &&
the_key_code != KeyEvent.VK_ALT) {
previously_typed = ' ';
}
return;
}
if (the_key_id == KeyEvent.KEY_PRESSED ||
the_key_id == KeyEvent.KEY_RELEASED) return;
replacement = UserKeyMap.translate(previously_typed, typed_key);
if (replacement != null) {
pos = getCaretPosition();
select(pos-1, pos);
previously_typed = ' ';
return;
}
replacement = UserKeyMap.translate(typed_key, e.isControlDown(), e.isAltDown());
if (replacement != null) {
replaceSelection(replacement);
if (typed_key >= '!' || typed_key <= '~') previously_typed = typed_key;
return;
}
super.processKeyEvent(e);
if (typed_key >= '!' || typed_key <= '~') previously_typed = typed_key;
} else {
super.processKeyEvent(e);
if (the_key_id == KeyEvent.KEY_RELEASED) {
if (typed_key >= '!' || typed_key <= '~') previously_typed = typed_key;
}
}
}
intinya hanya ada pada kode “UserKeyMap.translate” yaitu untuk mengganti karakter yang diketik di keyboard dengan yang ada pada tabel Arabic.mus. Tapi sebelumnya harus load dulu Arabic nya dengan memanggil:
UserKeyMap.loadUserKeyMap("Arabic.mus");
Oke demikian dulu…moga artikel ini bermanfaat bwt teman2 smua…Tuk source lengkapnya dapat didownload di sini:
http://www.4shared.com/file/S0cKz5nq/Simple_Arab.html
RSS
