UPDATE 24 Februari 2009 jm. 11.15 WIB
Karena banyaknya permintaan tentang script exam jeni 2 ini, maka saya berinisiatif untuk memposting script ini. Walaupun script ini msh blm smpurna Q harap apabila ada yg bisa menyempurnakan, tolong share balik yah!!
Maaf sebelumnya klo postingan ini sengaja Q buat tidak vulgar, Q jg berharap ada usaha dr anda.. Thank's b4... Good Luck...
OK langsung saja...
Buatlah proyek MIDLET java dengan nama proyek BukuTelpon dan nama class BukuTelpon_0 menggunakan j2me wireless toolkit, lalu klik API selection pada Target Platform pilih yg JTWI. Kemudian tulislah script midlet dibawah ini :
1. File pertama beri nama file BukuTelpon_0.java, tulislah script dibawah ini:
import com.sun.midp.main.Configuration;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Timer;
import java.util.TimerTask;
public class BukuTelpon_0 extends MIDlet implements CommandListener {
private WellcomePage wp; // Kelas baru dibuat
private Display d;
private ConfirmationPage cp; // Kelas baru dibuat
private Timer tmr;
private TugasTimerKu tmrTask; // Kelas baru dibuat
private LoginPage lp;
private MenuPage mp; // Kelas baru dibuat
private AddAnggotaPage aap; // Kelas baru dibuat
private ListAnggotaPage lip; // Kelas baru dibuat
private ListAnggotaPage lip2; // Kelas baru dibuat
private DetailAnggotaPage dap; // Kelas baru dibuat
private AddAnggotaPage aap2; // Kelas baru dibuat
private UpdatePinPage pg; // Kelas baru dibuat
public void startApp() {
if (d == null) {
wp = new WellcomePage();
cp = new ConfirmationPage();
lp = new LoginPage();
mp = new MenuPage();
tmr = new Timer();
aap = new AddAnggotaPage();
lip = new ListAnggotaPage();
lip2 = new ListAnggotaPage();
tmrTask = new TugasTimerKu();
dap = new DetailAnggotaPage("");
aap2 = new AddAnggotaPage("");
pg = new UpdatePinPage();
tmr.schedule(tmrTask,1100);
d = Display.getDisplay(this);
wp.setCommandListener(this);
cp.getConfirmationPageForm().setCommandListener(this);
lp.getLoginPageForm().setCommandListener(this);
mp.getMenuPageList().setCommandListener(this);
aap.getAddAnggotaPageForm().setCommandListener(this);
lip.getListAnggotaPageList().setCommandListener(this);
lip2.getListAnggotaPageList().setCommandListener(this);
pg.getUpdatePinPageForm().setCommandListener(this);
}
d.setCurrent(wp);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d){
if (c == wp.getCommandExit()) {
try {
this.d.setCurrent(cp.getConfirmationPageForm());
tmr.cancel();
} catch (Exception e) {
System.out.println("Error here : On Timer Cancel - " + e.toString());
}
} else if (c == cp.getCommandOK()) {
Quit();
} else if (c == cp.getCommandCancel()) {
this.d.setCurrent(wp);
tmr = new Timer();
TugasTimerKu tmrTask2 = new TugasTimerKu();
tmr.schedule(tmrTask2,110000000);
} else if (c == lp.getCommandExit()) {
Quit();
} else if (c == lp.getCommandOK()) {
System.out.println("heeet " + lp.getPin());
if (lp.getPin()== true ) {
this.d.setCurrent(mp.getMenuPageList());
}
} else if (c == aap.getCommandCancel()) {
this.d.setCurrent(mp.getMenuPageList());
} else if (c == aap.getCommandOK()) {
aap.createNewMember();
this.d.setCurrent(mp.getMenuPageList());
} else if (c == aap2.getCommandCancel()) {
this.d.setCurrent(lip2.getListAnggotaPageList());
} else if (c == aap2.getCommandOK()) {
aap2.updateMember();
lip2.dispList();
this.d.setCurrent(lip2.getListAnggotaPageList());
} else if (c == lip.getCommandCancel()) {
this.d.setCurrent(mp.getMenuPageList());
} else if (c == lip2.getCommandCancel()) {
this.d.setCurrent(mp.getMenuPageList());
} else if (c == dap.getCommandOK()) {
this.d.setCurrent(lip.getListAnggotaPageList());
} else if (c == pg.getCommandCancel()) {
this.d.setCurrent(mp.getMenuPageList());
} else if (c == pg.getCommandOK()) {
pg.updatePin();
this.d.setCurrent(mp.getMenuPageList());
} else if (d == lip.getListAnggotaPageList()) {
dap = new DetailAnggotaPage(lip.getListAnggotaPageList2Selected());
dap.getDetailAnggotaPageForm().setCommandListener(this);
this.d.setCurrent(dap.getDetailAnggotaPageForm());
} else if (d == lip2.getListAnggotaPageList()) {
aap2 = new AddAnggotaPage(lip2.getListAnggotaPageList2Selected());
aap2.getAddAnggotaPageForm().setCommandListener(this);
this.d.setCurrent(aap2.getAddAnggotaPageForm());
} else if (mp.getSelectedMenu().trim() == "Exit".trim()) {
Quit();
} else if (mp.getSelectedMenu().trim() == "Tambah Anggota".trim()) {
this.d.setCurrent(aap.getAddAnggotaPageForm());
} else if (mp.getSelectedMenu().trim() == "Update Anggota".trim()) {
lip2.dispList();
this.d.setCurrent(lip2.getListAnggotaPageList());
} else if (mp.getSelectedMenu().trim() == "Lihat Anggota".trim()) {
lip.dispList();
this.d.setCurrent(lip.getListAnggotaPageList());
} else if (mp.getSelectedMenu().trim() == "Update PIN".trim()) {
this.d.setCurrent(pg.getUpdatePinPageForm());
}
}
protected void Quit() {
destroyApp(true);
notifyDestroyed();
}
class TugasTimerKu extends TimerTask {
public void run() {
d.setCurrent(lp.getLoginPageForm());
}
}
}
2. File kedua beri nama LoginPage.java tulislah script dibawah ini:
/*
* ConfirmationPage.java
*
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class LoginPage {
/** Creates a new instance of ConfirmationPage */
private Form form;
private StringItem si;
private StringItem si2;
private Command cmdOK;
private Command cmdExit;
private TextField txtPIN;
private RecordStore recStore;
private String pin;
public LoginPage() {
form = new Form("Login");
si = new StringItem("","Enter PIN",Item.PLAIN);
si2 = new StringItem("","",Item.PLAIN);
si.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,Font.SIZE_LARGE));
txtPIN = new TextField("","",10,TextField.PASSWORD);
cmdOK = new Command("OK",Command.OK,1);
cmdExit = new Command("Exit",Command.EXIT,1);
form.append(si);
form.append(txtPIN);
form.append(si2);
form.addCommand(cmdOK);
form.addCommand(cmdExit);
dispList();
}
public Form getLoginPageForm() {
return form;
}
public Command getCommandExit() {
return cmdExit;
}
public Command getCommandOK() {
return cmdOK;
}
public boolean getPin() {
if (txtPIN.getString().trim().equals(pin)) {
return true;
} else {
return false;
}
}
public void dispList(){
try {
// Membuka atau membuat sebuah record store dengan nama "huahuahaha"
recStore = RecordStore.openRecordStore("PINStoredX", true);
// cek dah ada record store untuk pin belum
if (recStore.getNumRecords() > 0) {
byte[] recBytes = recStore.getRecord(1);
ByteArrayInputStream in = new ByteArrayInputStream(recBytes);
DataInputStream dIn = new DataInputStream(in);
int count = dIn.readInt();
pin = dIn.readUTF();
dIn.close();
in.close();
recStore.closeRecordStore();
si2.setText("PIN-nya : " + pin);
} else {
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dOut = new DataOutputStream(out);
// Menyimpan sebuah integer
dOut.writeInt(1 * 1);
// Menyimpan sebuah string
pin = "abc";
dOut.writeUTF(pin);
byte[] bytes = out.toByteArray();
// Menuliskan Record pada Store
recStore.addRecord(bytes, 0, bytes.length);
dOut.close();
out.close();
recStore.closeRecordStore();
si2.setText("PIN-nya : " + pin);
}
} catch (Exception e) {
System.out.println("error in here dear : " + e.toString());
}
}
}
3. File ketiga beri nama WellcomePage.java, tulislah script dibawah ini:
/*
* WellcomePage.java
*
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
public class WellcomePage extends Canvas {
/** Creates a new instance of WellcomePage */
private Image img;
private Command cmdExit;
public WellcomePage() {
cmdExit = new Command("Exit",Command.EXIT, 1);
addCommand(cmdExit);
try {
img = Image.createImage("/_logo_8.png");
} catch (Exception e) {
System.out.println("Error when try to load image file");
}
}
protected void paint (Graphics g){
g.setColor(100,100,200);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0,0,200);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,Font.SIZE_LARGE));
g.drawString("Selamat Datang",getWidth()/2,0,g.HCENTER | g.TOP);
g.drawString("JENI",getWidth()/2,16,g.HCENTER | g.TOP);
g.drawImage(img,getWidth()/2,38,g.HCENTER | g.TOP);
g.drawString("Created by paduka21",getWidth()/2,getHeight()-20,g.HCENTER | g.TOP);
}
public Command getCommandExit() {
return cmdExit;
}
}
4. File ke empat beri nama MenuPage.java, kemudian tulislah script dibawah ini:
/*
* ConfirmationPage.java
*
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.*;
public class MenuPage {
/** Creates a new instance of ConfirmationPage */
private List lst;
public MenuPage() {
String[] pilihan = {"Tambah Anggota", "Update Anggota", "Lihat Anggota", "Update PIN", "Exit"};
lst = new List("MENU", List.IMPLICIT, pilihan, null);
}
public List getMenuPageList() {
return lst;
}
public String getSelectedMenu() {
System.out.println(lst.getSelectedIndex());
return lst.getString(lst.getSelectedIndex());
}
}
5. File kelima beri nama UpdatePinPage.java, tulis script dibawah ini:
/*
* ConfirmationPage.java
*
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class UpdatePinPage {
/** Creates a new instance of ConfirmationPage */
private Form form;
private StringItem si;
private Command cmdOK;
private Command cmdCancel;
private TextField txtPIN;
private RecordStore recData;
public UpdatePinPage() {
form = new Form("Ubah PIN");
txtPIN = new TextField("PIN BARU : ","",50,TextField.ANY);
cmdOK = new Command("OK",Command.OK,1);
cmdCancel = new Command("Cancel",Command.BACK, 1);
form.append(txtPIN);
form.addCommand(cmdOK);
form.addCommand(cmdCancel);
}
public Form getUpdatePinPageForm() {
return form;
}
public Command getCommandCancel() {
return cmdCancel;
}
public Command getCommandOK() {
return cmdOK;
}
public void updatePin() {
System.out.println("hee1");
try {
/*RecordStore.deleteRecordStore("RecordMember");*/
recData = RecordStore.openRecordStore("PINStoredX", true);
String honey = txtPIN.getString().trim();
// Ini adalah String yang akan kita masukkan kedalam record
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dOut = new DataOutputStream(out);
// Menyimpan sebuah integer
dOut.writeInt(1 * 1);
// Menyimpan sebuah string
dOut.writeUTF(honey);
byte[] bytes = out.toByteArray();
System.out.println("honey = "+ honey);
recData.setRecord(1, bytes, 0, bytes.length);
dOut.close();
out.close();
recData.closeRecordStore();
} catch (Exception e) {
System.out.println("error hehe" + e.toString());
}
}
}
6. File ke enam beri nama ConfirmationPage.java, tulis script dibawah ini:
/*
* ConfirmationPage.java
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.*;
public class ConfirmationPage {
/** Creates a new instance of ConfirmationPage */
private Form form;
private StringItem si;
private Command cmdOK;
private Command cmdCancel;
public ConfirmationPage() {
form = new Form("Confirmation");
si = new StringItem("","Yakin Keluar ?",Item.PLAIN);
cmdOK = new Command("OK",Command.OK,1);
cmdCancel = new Command("Cancel",Command.CANCEL,1);
form.append(si);
form.addCommand(cmdOK);
form.addCommand(cmdCancel);
}
public Form getConfirmationPageForm() {
return form;
}
public Command getCommandCancel() {
return cmdCancel;
}
public Command getCommandOK() {
return cmdOK;
}
}
7. File ke tujuh beri nama DetailAnggotaPage.java, tulis script dibawah ini:
/*
* ConfirmationPage.java
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class DetailAnggotaPage {
/** Creates a new instance of ConfirmationPage */
private Form form;
private Command cmdOK;
private StringItem txtNama;
private StringItem txtGender;
private StringItem txtAlamat;
private StringItem txtTelepon;
private StringItem txtEmail;
private StringItem txtBirthday;
private String nama;
private String gender;
private String alamat;
private String telepon;
private String email;
private String birthday;
private String id;
public DetailAnggotaPage(String str) {
try {
int idx1 = str.indexOf("~");
int idx2 = str.indexOf("~",idx1+1);
int idx3 = str.indexOf("~",idx2+1);
int idx4 = str.indexOf("~",idx3+1);
int idx5 = str.indexOf("~",idx4+1);
int idx6 = str.indexOf("~",idx5+1);
nama = str.substring(0,idx1);
gender = str.substring(idx1+1,idx2);
alamat = str.substring(idx2+1,idx3);
telepon = str.substring(idx3+1,idx4);
email = str.substring(idx4+1,idx5);
birthday = str.substring(idx5+1,idx6);
id = str.substring(idx6+1);
} catch (Exception e) {
}
form = new Form("Detail Anggota");
txtNama = new StringItem("Nama : ", nama);
txtGender = new StringItem("Gender : ",gender);
txtAlamat = new StringItem("Alamat : ",alamat);
txtTelepon = new StringItem("Telepon : ", telepon);
txtEmail = new StringItem("Email : ",email);
txtBirthday = new StringItem("Birthday : ", birthday);
cmdOK = new Command("OK",Command.OK, 1);
form.append(txtNama);
form.append(txtGender);
form.append(txtAlamat);
form.append(txtTelepon);
form.append(txtEmail);
form.append(txtBirthday);
form.addCommand(cmdOK);
}
public Form getDetailAnggotaPageForm() {
return form;
}
public Command getCommandOK() {
return cmdOK;
}
}
8. File kedelapan beri nama AddAnggotaPage.java, tulis script dibawah ini:
/*
* AddAnggotaPage.java
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class AddAnggotaPage {
/** Creates a new instance of ConfirmationPage */
private Form form;
private StringItem si;
private Command cmdOK;
private Command cmdCancel;
private TextField txtNama;
private TextField txtAlamat;
private TextField txtTelepon;
private TextField txtEmail;
private TextField txtBirthday;
private RecordStore recData;
private ChoiceGroup cg;
private String nama="";
private String genderSel="";
private String alamat="";
private String telepon="";
private String email="";
private String birthday="";
private String id="";
public AddAnggotaPage() {
form = new Form("Tambah Anggota");
txtNama = new TextField("Nama : ","",50,TextField.ANY);
txtAlamat = new TextField("Alamat : ","",200,TextField.ANY);
txtTelepon = new TextField("Telepon : ","",20,TextField.PHONENUMBER);
txtEmail = new TextField("Email : ","",20,TextField.EMAILADDR);
txtBirthday = new TextField("Birthday : ","",20,TextField.ANY);
String [] gender = {"","Laki-Laki","Perempuan"};
cg = new ChoiceGroup("Gender : ",Choice.POPUP,gender,null);
cmdOK = new Command("OK",Command.OK,1);
cmdCancel = new Command("Cancel",Command.BACK, 1);
form.append(txtNama);
form.append(cg);
form.append(txtAlamat);
form.append(txtTelepon);
form.append(txtEmail);
form.append(txtBirthday);
form.addCommand(cmdOK);
form.addCommand(cmdCancel);
}
public AddAnggotaPage(String str) {
try {
int idx1 = str.indexOf("~");
int idx2 = str.indexOf("~",idx1+1);
int idx3 = str.indexOf("~",idx2+1);
int idx4 = str.indexOf("~",idx3+1);
int idx5 = str.indexOf("~",idx4+1);
int idx6 = str.indexOf("~",idx5+1);
nama = str.substring(0,idx1);
genderSel = str.substring(idx1+1,idx2);
alamat = str.substring(idx2+1,idx3);
telepon = str.substring(idx3+1,idx4);
email = str.substring(idx4+1,idx5);
birthday = str.substring(idx5+1, idx6);
id = str.substring(idx6+1);
} catch (Exception e) {
}
form = new Form("Update Anggota");
txtNama = new TextField("Nama : ",nama,50,TextField.ANY);
txtAlamat = new TextField("Alamat : ",alamat,200,TextField.ANY);
txtTelepon = new TextField("Telepon : ",telepon,20,TextField.PHONENUMBER);
txtEmail = new TextField("Email : ",email,20,TextField.EMAILADDR);
txtBirthday = new TextField("Birthday : ",birthday,20,TextField.ANY);
String [] gender = {"","Laki-Laki","Perempuan"};
cg = new ChoiceGroup("Gender : ",Choice.POPUP,gender,null);
int ehm = 0;
if (genderSel.trim().equals("Laki-Laki")) {
ehm = 1;
} else if (genderSel.trim().equals("Perempuan")) {
ehm = 2;
} else {
ehm = 0;
}
cg.setSelectedIndex(ehm, true);
cmdOK = new Command("OK",Command.OK,1);
cmdCancel = new Command("Cancel",Command.BACK, 1);
form.append(txtNama);
form.append(cg);
form.append(txtAlamat);
form.append(txtTelepon);
form.append(txtEmail);
form.append(txtBirthday);
form.addCommand(cmdOK);
form.addCommand(cmdCancel);
}
public Form getAddAnggotaPageForm() {
return form;
}
public Command getCommandCancel() {
return cmdCancel;
}
public Command getCommandOK() {
return cmdOK;
}
public void createNewMember() {
try {
/*RecordStore.deleteRecordStore("RecordMember");*/
recData = RecordStore.openRecordStore("RecordMember4", true);
String honey = txtNama.getString().trim() + "~" +
cg.getString(cg.getSelectedIndex()) + "~" +
txtAlamat.getString().trim() + "~" +
txtTelepon.getString().trim() + "~" +
txtEmail.getString().trim() + "~" +
txtBirthday.getString().trim();
addRecordElement(recData,honey);
} catch (Exception e) {
System.out.println(e.toString());
}
}
private void addRecordElement(RecordStore rs, String valueRecord) {
try{
rs = RecordStore.openRecordStore(rs.getName().toString(), true);
// Ini adalah String yang akan kita masukkan kedalam record
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dOut = new DataOutputStream(out);
// Menyimpan sebuah integer
dOut.writeInt(rs.getNextRecordID() * rs.getNextRecordID());
// Menyimpan sebuah string
valueRecord += "~" + rs.getNextRecordID();
dOut.writeUTF(valueRecord);
byte[] bytes = out.toByteArray();
// Menuliskan Record pada Store
rs.addRecord(bytes, 0, bytes.length);
dOut.close();
out.close();
rs.closeRecordStore();
} catch(Exception err){
System.out.println("here is " + err.toString());
}
}
public void updateMember() {
System.out.println("hee1" + id);
int idh = Integer.parseInt(id);
try {
/*RecordStore.deleteRecordStore("RecordMember");*/
recData = RecordStore.openRecordStore("RecordMember4", true);
String honey = txtNama.getString().trim() + "~" +
cg.getString(cg.getSelectedIndex()) + "~" +
txtAlamat.getString().trim() + "~" +
txtTelepon.getString().trim() + "~" +
txtEmail.getString().trim() + "~" +
txtBirthday.getString().trim() + "~" + idh;
// Ini adalah String yang akan kita masukkan kedalam record
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dOut = new DataOutputStream(out);
// Menyimpan sebuah integer
dOut.writeInt(idh * idh);
// Menyimpan sebuah string
dOut.writeUTF(honey);
byte[] bytes = out.toByteArray();
System.out.println("honey = "+ honey);
recData.setRecord(idh, bytes, 0, bytes.length);
dOut.close();
out.close();
recData.closeRecordStore();
} catch (Exception e) {
System.out.println("error hehe" + e.toString());
}
}
}
9. File kesembilan beri nama ListAnggotaPage.java, tulislah script dibawah ini:
/*
* ConfirmationPage.java
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class ListAnggotaPage implements RecordComparator {
private RecordStore recStore;
private StringItem si;
private Form form;
private List lst;
private List lst2;
private Command cmdCancel;
public ListAnggotaPage() {
String[] pilihan = {"A", "B", "C", "D", "Exit"};
lst = new List("Daftar Anggota", List.IMPLICIT);
lst2 = new List("Daftar Anggota", List.IMPLICIT);
cmdCancel = new Command("Cancel", Command.CANCEL, 0);
lst.addCommand(cmdCancel);
}
public void dispList() {
lst.deleteAll();
lst2.deleteAll();
try {
// Membuka atau membuat sebuah record store dengan nama "Anggota"
recStore = RecordStore.openRecordStore("Anggota", true);
// Mengambil isi dari record store
RecordEnumeration enumerator = recStore.enumerateRecords(null, null, false);
while (enumerator.hasNextElement()) {
// Menuju Record selanjutnya
byte[] recBytes = enumerator.nextRecord();
ByteArrayInputStream in = new ByteArrayInputStream(recBytes);
DataInputStream dIn = new DataInputStream(in);
int count = dIn.readInt();
String item = dIn.readUTF();
int x = item.indexOf("~");
String itm = item.substring(0, x);
int y = lst.append(itm, null);
int y2 = lst2.append(item, null);
dIn.close();
in.close();
}
recStore.closeRecordStore();
} catch (Exception e) {
System.out.println("error in here dear : " + e.toString());
}
}
public List getListAnggotaPageList() {
return lst;
}
public String getListAnggotaPageList2Selected() {
return lst2.getString(lst.getSelectedIndex());
}
public int compare(byte[] rec1, byte[] rec2) {
String record1 = new String(rec1).toUpperCase();
String record2 = new String(rec2).toUpperCase();
//Sorting Ascending
if (record1.compareTo(record2) <> 0) {
return (FOLLOWS);
} else {
return (EQUIVALENT);
}
}
}
public Command getCommandCancel() {
return cmdCancel;
}
}
Untuk lebih mudahnya, Copy script diatas. Kemudian paste di notepad lalu save as dalam bentuk NamaFile.java, setelah itu copy NamaFile.java pada pada folder src. Setelah itu gambar-gambar itu semua kamu taruh di folder res.
Catatan: Sesuaikan NamaFile.java seperti di atas. Misal BukuTelpon_0.java, juga harus kamu save dengan nama BukuTelpon_0.java.
Untuk download gambar2 tersebut silahkan klik download di bawah ini.
Untuk download yg lngsung jadi tersebut silahkan klik download di bawah ini.
Pertama sih Q bngung aja, knp kok stlah Q run error...
Pdhl script itu persis punya Q, trus langsung Q copas (copy paste) gt aja...
Aneh bin musahil pokoknya.. np sih bs gt??? Apa krn beda kmptr??? masak sih??? Apa krn scripnya klo di posting brubah???
Aaaarggghh.... Pusiiiing deaaach!!!!