June 11, 2013

Aplikasi Server dan Client dengan Metode POST

Pada postingan kali ini saya akan membahas tentang aplikasi server dan client dengan metode POST. Disini kita membutuhkan 2 buah program. Yang pertama saya beri nama InfoServer.java dan InfoClient.java.

Kode program untuk InfoServer.java
import java.io.*;
import java.net.*;
import java.util.*;
public class InfoServer {
private final int INFO_PORT=50000;
private String datafromClient;
/** InfoServer Constructor */
public InfoServer() {
BufferedReader inFromClient;
DataOutputStream outToClient;
Socket serverSocket;
try {
/* bind port 50000 ke alamat lokal */
ServerSocket infoServer =
new ServerSocket(INFO_PORT);
System.out.println("Server telah siap");
/* lakukan perulangan tanpa henti,
* sampai client memberikan perintah QUIT
*/
while (true) {
/* masuk ke mode listening,
* server siap menerima permintaan dari client
*/
serverSocket = infoServer.accept();
System.out.println("Ada client " +
"yang terkoneksi!");
/* buat input stream dari socket
* dan juga sekaligus konversi dari
* byte stream ke character stream
* (InputStreamReader)
* BufferedReader akan memudahkan
* dalam pengolahan data karakter
*/
inFromClient =
new BufferedReader(
new InputStreamReader(
serverSocket.getInputStream()));
/* buat output stream ke socket */
outToClient =
new DataOutputStream(
serverSocket.getOutputStream());
/* tulis welcome ke client */
outToClient.writeBytes("InfoServer versi 0.1\n"+
"hanya untuk testing..\n"+
"Silahkan berikan perintah TIME | NET | QUIT\n");
/* lakukan perulangan sampai client
* mengirimkan perintah QUIT
*/
boolean isQUIT = false;
while (!isQUIT) {
/* baca data dari client */
datafromClient = inFromClient.readLine();
if (datafromClient.startsWith("TIME")) {
outToClient.writeBytes(new
Date().toString() + "\n");
} else if (datafromClient.startsWith("NET")) {
outToClient.writeBytes(
InetAddress.getByName("localhost").toString() +
"\n");
} else if (datafromClient.startsWith("QUIT"))
{
isQUIT = true;
}
}
outToClient.close();
inFromClient.close();
serverSocket.close();
System.out.println("Koneksi client tertutup..");
}
}
catch (IOException ioe) {
System.out.print("error: " + ioe);
}
catch (Exception e) {
System.out.print("error: " + e);
}
}
/* program utama */
public static void main(String[] args) {
new InfoServer();
}
}

 
Kode program untuk InfoClient.java
import java.net.*;
import java.io.*;
import java.util.*;
public class InfoClient {
private final int INFO_PORT=50000;
private final String TargetHost = "localhost";
private final String QUIT = "QUIT";
/** Creates a new instance of InfoClient */
public InfoClient() {
try {
/* siapkan input stream dari standard input (keyboard) */
BufferedReader inFromUser =
new BufferedReader(new
InputStreamReader(System.in));
/* buat koneksi socket ke server dan port yang dituju */
Socket clientSocket = new
Socket(TargetHost, INFO_PORT);
/* siapkan output stream ke socket */
DataOutputStream outToServer =
new DataOutputStream(
clientSocket.getOutputStream());
/* siapkan input stream dari socket */
BufferedReader inFromServer =
new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
/* tampilkan informasi Welcome dari Server
* oleh karena method readLine() akan
* membaca satu baris string
* yang diakhir dengan karakter ENTER,
* maka perlu diberikan 3
* pemanggilan method readLine()
* untuk membaca 3 baris pesan Welcome
* yang dikirim dari server
*/
System.out.println(inFromServer.readLine());
System.out.println(inFromServer.readLine());
System.out.println(inFromServer.readLine());
System.out.println("");
boolean isQuit = false;
while (!isQuit) {
/* menunggu masukan perintah dari User */
System.out.print("Perintah Anda : ");
String cmd = inFromUser.readLine();
/* konversi ke Upper dan cek
* apakah perintah QUIT yang diketikkan
* jika QUIT, beri nilai true untuk isQUIT
* agar looping !isQUIT selesai
*/
cmd = cmd.toUpperCase();
if (cmd.equals(QUIT)) {
isQuit = true;
}
/* kirim perintah yang dimasukkan ke server
* dan diakhiri dengan karakter ENTER, karena
* pada server data dari client dibaca
* dengan method readLine() untuk membaca
* satu baris string sampai dengan ENTER
*/
outToServer.writeBytes(cmd + "\n");
/* block reading ".
* client harus menunggu balasan dari server
*/
String result = inFromServer.readLine();
System.out.println("Dari Server: " + result);
}
/* tutup semua stream dan koneksi socket */
outToServer.close();
inFromServer.close();
clientSocket.close();
}
catch (IOException ioe) {
System.out.println("Error:" + ioe);
}
catch (Exception e) {
System.out.println("Error:" + e);
}
}
/**
* Program Utama InfoClient
*/
public static void main(String[] args) {
new InfoClient();
}
}
 
Untuk menjalankan program ini, diperlukan 2 buah Command Prompt dimana satu berperan sebagai Server dan satunya sebagai Client.
Adapun tampilan pada saat dijalankan :

June 04, 2013

Aplikasi SMS dengan J2ME

Setelah postingan saya tentang Kirim dan Terima SMS dengan Java, sekarang saya akan membahas tentang aplikasi SMS. Fungsi aplikasi ini sama seperti postingan kemarin, namun yang membedakan ialah pada postingan saya kali ini, SMS yang dapat diterima dapat langsung dibalas.

Adapun kode program yang saya beri nama SMS.java.
import java.util.*;
import java.io.IOException;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;
import javax.microedition.midlet.*;

/**
* @author Veny Citra Puspitasari
* @see http://twitter.com/venyus
*/
public class SMS extends MIDlet implements CommandListener, Runnable,
MessageListener {

Display display;
Form form;
List menuList; //list untuk menu awal
Command exitCom, replyCom, backCom, clrCom, sendCom; //command yg digunakan
TextBox textSmsMasuk, textSmsKeluar; //tempat text sms yg masuk & yg mau dikirim
TextField textNo; //untuk tempat memasukan no tujuan
String port, isiSmsKeluar; //port dan isi sms
Thread thread;
String[] connections;
boolean done;
MessageConnection smsconn;
Message msg;

public SMS() {
display = Display.getDisplay(this);
form = new Form("sms-an Yuk");
exitCom = new Command("Exit", Command.EXIT, 1);
replyCom = new Command("Reply", Command.SCREEN, 1);
backCom = new Command("Back", Command.BACK, 3);
clrCom = new Command("Delete It", Command.OK, 2);
sendCom = new Command("Send", Command.OK, 1);
menuList = new List("Menu SMS", List.IMPLICIT);
port = "4321"; //port yang aku gunakan, ganti sesuai keinginan masing masing
textSmsMasuk = new TextBox(null, null, 500, TextField.ANY);
textSmsKeluar = new TextBox("Please, Write Message Here", null,
500, TextField.ANY);
textNo = new TextField("Enter The Destination Number", "",
15, TextField.PHONENUMBER);
}

public void startApp() {
bukaKoneksi(); //disini membuka koneksi untuk siap menerima sms masuk
menu(); // bikin tampilan menu awal
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {

//sebelum aplikasinya keluar ato mati koneksi ditutup dulu
done = true;
thread = null;
if (smsconn != null) {
try {
smsconn.close();
} catch (IOException e) {
}
}

//disini mati deh aplikasi kita
notifyDestroyed();
}

public void menu() { //membuat menu awal untuk sementara ini baru ada 3 menu
menuList.append("Write Message", null);//1. menu tulis sms baru
menuList.append("About", null);//2. menu about (gak penting sih sebenarnya)
menuList.append("Exit", null);//3. menu untuk keluar aplikasi
menuList.addCommand(exitCom);  //add command keluar
menuList.setCommandListener(this);
display.setCurrent(menuList);
}

public void tulisSms() { //membuat textbox untuk menulis sms baru
textSmsKeluar.addCommand(sendCom); //add command untuk kirim
textSmsKeluar.addCommand(clrCom);  // add command untuk clear text
textSmsKeluar.addCommand(backCom); //add command untuk kembali kemenu awal
textSmsKeluar.setCommandListener(this);
display.setCurrent(textSmsKeluar);
}

public void masukNo() { //disini untuk memasukan nomor tujuan
form.setTitle("Sms Siap dikirim"); //udah taukan yang ini?
form.append(textNo); //menambahkan textField untuk nomor tujuan
form.addCommand(backCom); //menambahkan command untuk kembali ke menu awal
form.addCommand(sendCom); //menambahkan command untuk mengirim
form.setCommandListener(this);
display.setCurrent(form);
}

public void kirim() { //disini sms yang udah ditulis dikirim dgn perintah
new Thread(new Runnable() {
//perhatiin ya
public void run() {
try {
String isiSms = isiSmsKeluar;
String noTujuan = textNo.getString();
String address = "sms://" + noTujuan + ":" + port;
MessageConnection smsConnKir = null;
Message isiSmsNya = null;
smsConnKir = (MessageConnection) Connector.open(address);
TextMessage txtmessage =
(TextMessage) smsConnKir.newMessage(MessageConnection.TEXT_MESSAGE);
txtmessage.setAddress(address);
txtmessage.setPayloadText(isiSms);
isiSmsNya = txtmessage;
smsConnKir.send(isiSmsNya);

} catch (Throwable t) {
t.printStackTrace();
}
}
}).start();
}

public void terima(String isi, String no, Date tgl) { //tempat sms masuk
String nonya = fixNomer(no);
textSmsMasuk = new TextBox("Sms dari:" + nonya + " " + tgl, isi,
isi.length(), TextField.ANY);
textSmsMasuk.addCommand(replyCom);
textSmsMasuk.addCommand(exitCom);
textSmsMasuk.setCommandListener(this);
display.setCurrent(textSmsMasuk);
}

public void bukaKoneksi() { //membuka koneksi agar bisa menerima sms yg masuk
String smsConnection = "sms://:" + port;
done = true;
thread = null;

try {
smsconn = (MessageConnection) Connector.open(smsConnection);
smsconn.setMessageListener(this);
} catch (IOException ioe) {
ioe.printStackTrace();
}

connections = PushRegistry.listConnections(true);

done = false;
thread = new Thread(this);
thread.start();
}

public void tutupKoneksi() { //untuk menutup koneksi sms
try {
smsconn.close();
} catch (IOException e) {
}
}

public String fixNomer(String no) {
//dari format no gini "sms://+6285XXXX" jadi "+6285XXX" gitu fungsinya

String hs = null;
hs = no.substring(6, no.length());
return hs;
}

public void commandAction(Command c, Displayable d) {
if (c == exitCom) {
destroyApp(true);
}
if (d == menuList) {
if (menuList.isSelected(0)) {
tulisSms();
} else if (menuList.isSelected(1)) {
Alert about = new Alert("About", "Aplikasi SMS buatan Veny Citra Puspitasari. " +
     "Source-nya saya dapatkan dari Internet",
null, AlertType.INFO);
display.setCurrent(about);
} else if (menuList.isSelected(2)) {
destroyApp(true);
}
}
if (d == textSmsKeluar) {
if (c == sendCom) {
form.deleteAll();
masukNo();
} else if (c == clrCom) {
textSmsKeluar.setString("");
} else if (c == backCom) {
display.setCurrent(menuList);
}
}
if (d == textSmsMasuk) {
if (c == exitCom) {
display.setCurrent(menuList);
} else if (c == replyCom) {
tulisSms();
}
}
if (d == form) {
if (c == backCom) {
form.deleteAll();
display.setCurrent(textSmsKeluar);
} else if (c == sendCom) {
isiSmsKeluar = textSmsKeluar.getString();
textSmsKeluar.setString("");
kirim();
}
}
}

public void run() { //untuk menerima sms yang masuk
try {
msg = smsconn.receive();
String senderAddress = msg.getAddress();
Date waktuSms = msg.getTimestamp();
if (msg instanceof TextMessage) {
String isiSmsMasuk = ((TextMessage) msg).getPayloadText();
terima(isiSmsMasuk, senderAddress, waktuSms);//memasukan sms ke texbok
}
tutupKoneksi();
bukaKoneksi();
} catch (IOException e) {
}
}

public void notifyIncomingMessage(MessageConnection conn) {
if (thread == null) {
done = false;
thread = new Thread(this);
thread.start();
}
}
}


Dan ini adalah tampilan SMS.

Anda dapat mendownload modul Aplikasi SMS dengan J2ME yang telah saya siapkan agar Anda dapat belajar ketika koneksi internet Anda mati.
Sekian pembahasan saya kali ini. :)

Kirim dan Terima SMS dengan J2ME

Seperti pada postingan disini, saya akan membahas tentang pembuatan aplikasi kirim dan terima SMS dengan Java yang dapat Anda masukkan ke dalam handphone Anda.
 
Disini saya menggunakan 2 buah program. Pertama kirimSMS.java untuk si pengirim SMS dan terimaSMS.java untuk si penerima SMS.

Kode program kirimSMS.java
import javax.microedition.io.Connector;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
public class kirimSMS extends MIDlet implements CommandListener,Runnable
{
private Form sendMessageForm;
private TextField number, msg;
private Command cmdOK,cmdExit;
private String telpNum, isiPesan = "";
public kirimSMS(){
cmdExit = new Command("Back", Command.EXIT, 2);
cmdOK = new Command("Send", Command.SCREEN, 2);
sendMessageForm = new Form("Send Message");
msg = new TextField("Message:", null, 50, TextField.ANY);
number = new TextField("Telepon:", null, 15, TextField.PHONENUMBER);
sendMessageForm.append(number);
sendMessageForm.append(msg);
sendMessageForm.addCommand(cmdOK);
sendMessageForm.addCommand(cmdExit);
sendMessageForm.setCommandListener(this);
}
protected void destroyApp(boolean arg0) {
notifyDestroyed();
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(sendMessageForm);
}
public void commandAction(Command arg0, Displayable arg1) {
if(arg0==cmdOK){
telpNum = number.getString();
isiPesan = msg.getString();
new Thread(this).start();
number.setString("");
msg.setString("");
Display.getDisplay(this).setCurrent(sendMessageForm);
}else if(arg0==cmdExit){

destroyApp(true);
}
}
public void run() {
try{
String nomorTelp = "sms://" + telpNum + ":1234";
MessageConnection conn =
(MessageConnection)Connector.open(nomorTelp);
TextMessage msg = (TextMessage)
conn.newMessage(MessageConnection.TEXT_MESSAGE);
msg.setPayloadText(isiPesan);
conn.send(msg);
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

Kode program terimaSMS.java
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.TextBox;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.Message;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
public class terimaSMS extends MIDlet implements Runnable,
CommandListener {
private TextBox tb;
private String text = "Menunggu pesan...";
private Command okComand;
public terimaSMS() {
tb = new TextBox("Hello MIDlet", text, 150, 0);
}
protected void destroyApp(boolean arg0) throws
MIDletStateChangeException {
}

protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(tb);
new Thread(this).start();
}
public void changeScreen() {
tb = new TextBox("SMS MIDlet", text, 150, 0);
Display.getDisplay(this).setCurrent(tb);
}
public void addConfirmation(String msg) {
tb = new TextBox("SMS MIDlet", text, 150, 0);
tb.setString(msg);
okComand = new Command("OK",Command.OK,1);
tb.addCommand(okComand);
tb.setCommandListener(this);
Display.getDisplay(this).setCurrent(tb);
}
public void run() {
try {
MessageConnection rconn = (MessageConnection) Connector
.open("sms://:1234");
while (true) {
Message msg = rconn.receive();
if (msg instanceof TextMessage) {
TextMessage tmsg = (TextMessage) msg;
String msgOut = tmsg.getPayloadText();
addConfirmation(msgOut);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void commandAction(Command arg0, Displayable arg1) {
}
}
 
Untuk mengurangi panjangnya halaman postingan saya kali ini, Anda bisa mendownload modul Kirim dan Terima SMS dengan J2ME yang dapat Anda pelajari lebih rinci.
Inilah hasil simulasi pembuatan aplikasi kirim dan terima SMS dengan Sun Java Wireless Toolkit.

Sekian pembahasan tentang aplikasi kirim dan terima SMS ini. :)
 

Penggabungan Aplikasi Login dan Aplikasi Nilai

Kali ini saya akan membahas tentang penggabungan Aplikasi Login dan Aplikasi Nilai seperti pada postingan saya sebelumnya.
 
Adapun kode programnya saya beri nama LgnNilai.java.
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;

public class LgnNilai extends MIDlet implements CommandListener{
  private Display display;
  private TextField userName,password;
  public Form form;
  private Command login,cancel;
  private Image img, imge, img2;
  Command cmdExit,cmdBack,cmdHitung;
  Display dis;
  Form frmInput,frmOutput;
  TextField tfMakul,tfNilai;
  StringItem siMakul,siSKS,siNilai,siGrade,siBobot;
  ChoiceGroup cg1;

  public LgnNilai() {
    form = new Form("Sign in");
    userName = new TextField("LoginID:", "", 30, TextField.ANY);
    password = new TextField("Password:", "", 30, TextField.PASSWORD);
    cancel = new Command("Cancel", Command.CANCEL, 2);
    login = new Command("Login", Command.OK, 2);
    try{
      img = Image.createImage("/logo.png");
      imge = Image.createImage("/gagal.png");
      img2 = Image.createImage("/sukses.png");
    }catch(Exception e){
      System.out.println(e.getMessage());
    }
    cmdExit = new Command("Keluar",Command.EXIT,0);
    cmdBack = new Command("OK",Command.SCREEN,0);
    cmdHitung = new Command("Proses",Command.SCREEN,0);
    cg1=new ChoiceGroup("SKS",Choice.EXCLUSIVE);
    cg1.append("2 SKS",null);
    cg1.append("4 SKS",null);
    cg1.append("6 SKS",null);
    frmInput=new Form("Form Input");
    tfMakul = new TextField("Mata Kuliah","",30,TextField.ANY);
    tfNilai = new TextField("Nilai","",30,TextField.NUMERIC);
    frmInput.append(tfMakul);
    frmInput.append(cg1);
    frmInput.append(tfNilai);
    frmInput.addCommand(cmdExit);
    frmInput.addCommand(cmdHitung);
    frmInput.setCommandListener(this);
    frmOutput=new Form("Form Output");
    siMakul=new StringItem("Mata Kuliah","");
    siSKS=new StringItem("SKS","");
    siNilai=new StringItem("Nilai","");
    siGrade=new StringItem("Grade","");
    siBobot=new StringItem("Bobot Nilai",null);
    frmOutput.append(siMakul);
    frmOutput.append(siSKS);
    frmOutput.append(siNilai);
    frmOutput.append(siGrade);
    frmOutput.append(siBobot);
    frmOutput.addCommand(cmdBack);
    frmOutput.setCommandListener(this);
  }

   public void startApp() {
    display = Display.getDisplay(this);
    try{form.append(img);}catch(Exception e){}
    form.append(userName);
    form.append(password);
    form.addCommand(cancel);
    form.addCommand(login);
    form.setCommandListener(this);
    display.setCurrent(form);

  }

  public void pauseApp() {}
  public void destroyApp(boolean unconditional) {
  notifyDestroyed();
    }
    public void validateUser(String name, String password) {
      if (name.equals("venyus") && password.equals("v3nyu5")) {
        showMsg();
      } else {
        tryAgain();
      }
    }
    public void showMsg() {
     dis = Display.getDisplay(this);
     dis.setCurrent(frmInput);
    }
    public void tryAgain() {
      Alert error = new Alert("Login salah", "coba lagi", imge, AlertType.ERROR);
      error.setTimeout(900);
      error.setImage(imge);
      userName.setString("");
      password.setString("");
      display.setCurrent(error, form);
    }

    public void commandAction(Command c, Displayable d) {
      String label = c.getLabel();
      if(label.equals("Cancel")) {
        destroyApp(true);
      } else if(label.equals("Login")) {
        validateUser(userName.getString(), password.getString());
      }
      if(c==cmdBack){
      dis.setCurrent(frmInput);
      }else if(c==cmdHitung){
      int nilai,nilaigrade,bobotnilai,sks;
      siMakul.setText(tfMakul.getString());
      if(cg1.isSelected(0)){
      siSKS.setText("2 SKS");
      sks=2;
      }else if(cg1.isSelected(1)){
      siSKS.setText("4 SKS");
      sks=4;
      }else{
      siSKS.setText("6 SKS");
      sks=6;
      }
      siNilai.setText(tfNilai.getString());
      nilai=Integer.parseInt(tfNilai.getString());
      if(nilai<=49){
      siGrade.setText("E");
      nilaigrade=0;
      }else if(nilai<=59){
      siGrade.setText("D");
      nilaigrade=1;
      }else if(nilai<=74){
      siGrade.setText("C");
      nilaigrade=2;
      }else if(nilai<=80){
      siGrade.setText("B");
      nilaigrade=3;
      }else{
      siGrade.setText("A");

      nilaigrade=4;
      }
      bobotnilai=sks*nilaigrade;
      siBobot.setText(Integer.toString(bobotnilai));
      dis.setCurrent(frmOutput);
      }else if(c==cmdExit){
      destroyApp(false);
      notifyDestroyed();
      }else{
      dis.setCurrent(frmInput);
}
    }
}
 
Untuk mengurangi panjangnya halaman postingan saya kali ini, Anda bisa mendownload modul Penggabungan Aplikasi Login dan Nilai dengan J2ME yang dapat Anda pelajari lebih rinci.
Inilah hasil simulasi pembuatan aplikasi login dan nilai dengan Sun Java Wireless Toolkit.
Sekian pembahasan tentang aplikasi login dan nilai ini. :)
 

Aplikasi Nilai Sederhana dengan J2ME

Seperti pada postingan disini, saya akan membahas tentang pembuatan aplikasi Nilai Sederhana dengan Java yang dapat Anda masukkan ke dalam handphone Anda.
 
Adapun kode programnya saya beri nama AplikasiNilai.java.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class AplikasiNilai extends MIDlet implements CommandListener{
Command cmdExit,cmdBack,cmdHitung;
Display dis;
Form frmInput,frmOutput;
TextField tfMakul,tfNilai;
StringItem siMakul,siSKS,siNilai,siGrade,siBobot;
ChoiceGroup cg1;
public AplikasiNilai(){
cmdExit = new Command("Keluar",Command.EXIT,0);
cmdBack = new Command("OK",Command.SCREEN,0);
cmdHitung = new Command("Proses",Command.SCREEN,0);
cg1=new ChoiceGroup("SKS",Choice.EXCLUSIVE);
cg1.append("2 SKS",null);
cg1.append("4 SKS",null);
cg1.append("6 SKS",null);
frmInput=new Form("Form Input");
tfMakul = new TextField("Mata Kuliah","",30,TextField.ANY);
tfNilai = new TextField("Nilai","",30,TextField.NUMERIC);
frmInput.append(tfMakul);
frmInput.append(cg1);
frmInput.append(tfNilai);
frmInput.addCommand(cmdExit);
frmInput.addCommand(cmdHitung);
frmInput.setCommandListener(this);
frmOutput=new Form("Form Output");
siMakul=new StringItem("Mata Kuliah","");
siSKS=new StringItem("SKS","");
siNilai=new StringItem("Nilai","");
siGrade=new StringItem("Grade","");
siBobot=new StringItem("Bobot Nilai",null);
frmOutput.append(siMakul);
frmOutput.append(siSKS);
frmOutput.append(siNilai);
frmOutput.append(siGrade);
frmOutput.append(siBobot);
frmOutput.addCommand(cmdBack);
frmOutput.setCommandListener(this);
}
public void startApp(){
dis = Display.getDisplay(this);
dis.setCurrent(frmInput);
}
public void pauseApp(){
}
public void destroyApp(boolean unc){
}
public void commandAction(Command c,Displayable d){
if(c==cmdBack){
dis.setCurrent(frmInput);
}else if(c==cmdHitung){
int nilai,nilaigrade,bobotnilai,sks;
siMakul.setText(tfMakul.getString());
if(cg1.isSelected(0)){
siSKS.setText("2 SKS");
sks=2;
}else if(cg1.isSelected(1)){
siSKS.setText("4 SKS");
sks=4;
}else{
siSKS.setText("6 SKS");
sks=6;
}
siNilai.setText(tfNilai.getString());
nilai=Integer.parseInt(tfNilai.getString());
if(nilai<=49){
siGrade.setText("E");
nilaigrade=0;
}else if(nilai<=59){
siGrade.setText("D");
nilaigrade=1;
}else if(nilai<=74){
siGrade.setText("C");
nilaigrade=2;
}else if(nilai<=80){
siGrade.setText("B");
nilaigrade=3;
}else{
siGrade.setText("A");
nilaigrade=4;
}
bobotnilai=sks*nilaigrade;
siBobot.setText(Integer.toString(bobotnilai));
dis.setCurrent(frmOutput);
}else if(c==cmdExit){
destroyApp(false);
notifyDestroyed();
}else{
dis.setCurrent(frmInput);
}
}
}
 
Untuk mengurangi panjangnya halaman postingan saya kali ini, Anda bisa mendownload modul Aplikasi Nilai dengan J2ME yang dapat Anda pelajari lebih rinci.
Inilah hasil simulasi pembuatan aplikasi nilai dengan Sun Java Wireless Toolkit.
Sekian pembahasan tentang aplikasi nilai ini. :)