19/09/12

Membuat Menu Dari JOption

Dapet tugas JAVA lagi dari Pak Hadi :o . Ya seh memang lumayan sulit, tapi kalo yang ini di praktekan mungkin paham maksut dari ini. Ikut langkah-langkah dibawah ini ya :D
  • Buka Netbeans IDE 7.1.2 (versi yang saya punya)
  • Lalu setelah itu klik kanan pada praktek1 (java) ->pilih new java class dan ketiklah nama disitu ( untuk java kalimat pertama-huruf pertama harus kapital, dan diikuti pada kalimat kedua huruf pertama juga )
  • Setelah itu klik finish dan ketik coding dibawah ini :
package Praktek1;
import javax.swing.JOptionPane;

public class TugasMenuJOption {
   private static String name;
   private static String des;
   private static int validDes;
   static String kelamin;
   static String inpTerbilang;
   static StringBuilder hasilBiner = new StringBuilder();
   static StringBuilder hasilHexa = new StringBuilder();
   static StringBuilder hasilOktal = new StringBuilder();
 
   public static void keBiner(int n) {
        if (n > 1) {
            keBiner(n / 2);
        }
        System.out.print(n % 2);
        hasilBiner.append(n % 2);
    }
    public static void keHexa(int n) {
        char[] daftarHexa = {'0', '1', '2', '3', '4', '5', '6', '7',
            '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};//==> daftra hexa = list untuk hexa
        if (n > 0) {
            keHexa(n / 16);
            System.out.print(daftarHexa[n % 16]);
            hasilHexa.append(daftarHexa[n % 16]);
        }
    }


    public static void keOktal(int n) {
        char[] daftarOktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
        if (n > 1) {
            keOktal(n / 8);
            System.out.print(daftarOktal[n % 8]);
            hasilOktal.append(n % 8);
        }
    }

// coding selanjutnya untuk melakukan input desimal, nama, dan jenis kelamin melalui JOption.Pane

    public static void inputDesJOption() {
        des = JOptionPane.showInputDialog("masukkan"
                + "Bil.Desimalnya = ");
        try {
            if (des.isEmpty()) {
                JOptionPane.showMessageDialog(null,
                        "bilangan tidak boleh kosong !");
                inputDesJOption();//kembali input nama
            }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null,
                    "Harap diisi dulu bilangannya !");
            inputDesJOption(); }//kembali input bil desimal      
        }

    public static void inpKelamin(){
        kelamin = JOptionPane.showInputDialog("Masukkan"
                + "Jenis Kelamin kalian (cowok / cewek)");
        try {
            if (kelamin.isEmpty()) {
                JOptionPane.showMessageDialog(null,
                        "Jenis kelamin tidak boleh kosong !");
                inpKelamin();//kembali input kelamin
            }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null,
                    "Harap diisi jenis kelamin kalian dahulu !");
            inpKelamin();//kembali input kelamin
        }
        if ("cowok".equals(kelamin)) {
            kelamin = "bro ";
        } else {
            if ("cewek".equals(kelamin)) {
                kelamin = "sista ";
            } else {
                JOptionPane.showMessageDialog(null, "Hanya cewek atau cowok");
                inpKelamin();
            }
        }
    }

    public static void inpNama() {
        name = JOptionPane.showInputDialog("Masukkan"
                + "Nama Kalian dahulu :)");
        try {
            if (name.isEmpty()) {
                JOptionPane.showMessageDialog(null,
                        "ups! :D nama tidak boleh kosong");
                inpNama();//kembali input nama
            }
            else {
                for(int i=0;i<name.length();i++){
                    if(!Character.isLetter(name.charAt(i))){
                JOptionPane.showMessageDialog(null, "Gak boleh diisi angka!!");
                inpNama();
                }
                }
            }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null,
                    "Harap diisi nama dulu ya ;)");
            inpNama();//kembali input nama

        } catch (NumberFormatException nfe) {// dirun saat kesalahan formatnumber
            JOptionPane.showMessageDialog(null, name
                    + "bukan karakter !"
                    + "\nMasukkan karakter saja !");
            inpNama();

        }
    }
//coding selanjutnya ini untuk proses eksepsi inputan bilangan. mulai dari message dialog untuk menginputkan sampai aturan aturannya

    public static void eksepsiInpBiner() {
        inputDesJOption();
        try { //konsepnya seperti if dan else ------ try-catch-catch----finally
            validDes = Integer.parseInt(des);
            System.out.print("\nDesimal dari " + des
                    + ", Binernya adalah = ");
            keBiner(validDes);
            System.out.println();
            JOptionPane.showMessageDialog(null, "Bilangan desimal :" + des
                    + " maka binernya adalah :" + hasilBiner, "KONVERSI BILANGAN", JOptionPane.PLAIN_MESSAGE);
            hasilBiner = new StringBuilder();
        } catch (NumberFormatException nfe) {// dirun saat kesalahan formatnumber
            JOptionPane.showMessageDialog(null, des
                    + "bukan angka !"
                    + "\nMasukkan angka saja !");
            eksepsiInpBiner();
        }
    }

    public static void eksepsiInpHexa() {
        inputDesJOption();
        try { //konsepnya seperti if dan else ------ try-catch-catch----finally
            validDes = Integer.parseInt(des);
            System.out.print("\nDesimal dari " + des
                    + ", Hexanya adalah = ");
            keHexa(validDes);
            System.out.println();
            JOptionPane.showMessageDialog(null, "Bilangan desimal :" + des
                    + " maka hexanya adalah :" + hasilHexa, "KONVERSI BILANGAN", JOptionPane.PLAIN_MESSAGE);
            hasilHexa = new StringBuilder();
        } catch (NumberFormatException nfe) {// dirun saat kesalahan formatnumber
            JOptionPane.showMessageDialog(null, des
                    + "bukan angka !"
                    + "\nMasukkan angka saja !");
            eksepsiInpHexa();
        }
     
    }

    public static void eksepsiInpOktal() {
        inputDesJOption();
        try { //konsepnya seperti if dan else ------ try-catch-catch----finally
            validDes = Integer.parseInt(des);
            System.out.print("\nDesimal dari " + des
                    + ", Oktalnya adalah = ");
            keOktal(validDes);
            System.out.println();
            JOptionPane.showMessageDialog(null, "Bilangan desimal :" + des
                    + " maka oktalnya adalah :" + hasilOktal, "KONVERSI BILANGAN", JOptionPane.PLAIN_MESSAGE);
            hasilOktal = new StringBuilder();
        } catch (NumberFormatException nfe) {// dirun saat kesalahan formatnumber
            JOptionPane.showMessageDialog(null, des
                    + "bukan angka !"
                    + "\nMasukkan angka saja !");
            eksepsiInpOktal();
        }
     
    }
// coding selanjutnya untuk mengoutputkan hasil konversi
public static void outHasilBiner() {
        eksepsiInpBiner();
    }

    public static void outHasilHexa() {
        eksepsiInpHexa();
    }

    public static void outHasilOktal() {
        eksepsiInpOktal();
    }
 // coding selanjutnya untuk konversi bilangan pecahan dan terbilang
String[] angka = {"", "Satu", "Dua", "Tiga",
        "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas"};

    private String keTerbilang(int a) {
        String bilang = "";
        int b = a / 100;
        if (b > 0) {
            bilang = angka[b] + " Ratus ";
            if (b == 1) {
                bilang = "Seratus ";
            }
            a %= 100;
        }
        if (a < 12) {
            bilang += angka[a];
        } else {
            b = a / 10;
            a %= 10;
            if (b == 1) {
                bilang += angka[a] + " Belas";
            } else {
                bilang += angka[b] + " Puluh " + angka[a];
            }
        }
        return bilang;
    }

    private String terbilang(long a) {
        int b;
        String bilang = "";
        String[] satuan = {"", " Ribu ", " Juta ", " Milyar ", " Trilyun ", " Quadrilyun ", " Quintilyun "};
        if (a > Math.pow(10, 20)) {
            return "Bilangan terlalu besar";
        }
        for (int i = 6; i > 0; i--) {
            b = (int) (a / Math.pow(10, i * 3));
            if (b > 0) {
                if (b == 1 && i == 1) {
                    bilang += " Seribu ";
                } else {
                    bilang += keTerbilang(b) + satuan[i];
                }
            }
            a %= Math.pow(10, i * 3);
        }
        bilang += keTerbilang((int) a);
        return bilang;
    }

    public static void outTerbilang() {
        inputDesJOption();
        //inpTerbilang = JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
        try{
            /*if (inpTerbilang.isEmpty()){
              //  JOptionPane.showMessageDialog(null,
               //         "bilangan tidak boleh kosong!");
               // outTerbilang();
            //}else{ */
            validDes = Integer.parseInt(des);
        JOptionPane.showMessageDialog(null, new TugasMenuJOption().terbilang(new Long(des)),
                "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
         
           /* }catch (NullPointerException err){
                JOptionPane.showMessageDialog(null,
                        "harap diisi bilangan desimalnya dahulu!");
                outTerbilang();*/
            }catch(NumberFormatException nfe){
                JOptionPane.showMessageDialog(null, "halo" + "itu bukan angka");
                outTerbilang();
            }
    }

    public static void hasilPecahan() {
        int desimal;
    String str = JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah : ");
        try{
            if(str.isEmpty()){
                JOptionPane.showMessageDialog(null, "jangan kosong ya! :D");
                hasilPecahan();
            }else{
         

        desimal = Integer.parseInt(str);
        int satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, sepuluh, sebelas, duabelas, tigabelas;
        satu = desimal / 100000;
        desimal %= 100000;

        dua = desimal / 50000;
        desimal %= 50000;

        tiga = desimal / 20000;
        desimal %= 20000;

        empat = desimal / 10000;
        desimal %= 10000;

        lima = desimal / 5000;
        desimal %= 5000;

        enam = desimal / 2000;
        desimal %= 2000;

        tujuh = desimal / 1000;
        desimal %= 1000;

        delapan = desimal / 500;
        desimal %= 500;

        sembilan = desimal / 200;
        desimal %= 200;

        sepuluh = desimal / 100;
        desimal %= 100;

        sebelas = desimal / 50;
        desimal %= 50;

        duabelas = desimal / 10;
        desimal %= 10;

        tigabelas = desimal / 1;
        desimal %= 1;

        JOptionPane.showMessageDialog(null, "Jumlah seratus ribuan = " + satu
                + "\nJumlah lima puluh ribuan = " + dua
                + "\nJumlah dua puluh ribuan = " + tiga
                + "\nJumlah sepuluh ribuan = " + empat
                + "\nJumlah lima ribuan = " + lima
                + "\nJumlah dua ribuan = " + enam
                + "\nJumlah seribuan = " + tujuh
                + "\nJumlah lima ratusan = " + delapan
                + "\nJumlah dua ratusan = " + sembilan
                + "\nJumlah seratusan = " + sepuluh
                + "\nJumlah lima puluhan = " + sebelas
                + "\nJumlah lima satuan = " + duabelas
                + "\nJumlah satuan = " + tigabelas, "PECAHAN", JOptionPane.INFORMATION_MESSAGE);
            }
        }catch (NullPointerException not){
            JOptionPane.showMessageDialog(null, "Harap diisi bilangan!");
            hasilPecahan();
        }catch (NumberFormatException nae){
            JOptionPane.showMessageDialog(null, "Hey '" +str+ "'"
                    + " itu bukan angka"
                    +"\nHanya Angka saja");
            hasilPecahan();
        }
     }

//coding selanjutnya untuk proses menampilkan pada JOptionPane. coding ini merupakan coding terakhir dan utama untuk interface pada JOptionPane serta sekaligus coding main utama untuk menjalakna program tersebut
  public static void menuJOption() {
        // text untuk tombol
        inpNama();
        inpKelamin();
        String[] pilihan = {"BINER", "HEXA", "OKTAL", "TERBILANG", "PECAHAN", "BACK", "EXIT"};
        // "infinite" loop,selesai jika system.exit(0)
        while (true) {
            int response = JOptionPane.showOptionDialog( // ------ merupakan isian parameter
                    null, "Selamat Datang" + kelamin + "" + name + ","
                    + "\nPilih Konversi Bilangan dibawah sini"//pesan
                    , "Konversi Bilangan"// Judul Bar
                    , JOptionPane.YES_NO_OPTION //tipe pilihan
                    , JOptionPane.QUESTION_MESSAGE //tipepesan
                    , null //icon (none)
                    , pilihan //tombol text
                    , null //label tombol default
                    );
            //menggunakan switch untuk mengecek tombol yg ditekan
            switch (response) {
                case 0:
                    outHasilBiner();
                    break;
                case 1:
                    outHasilHexa();
                    break;
                case 2:
                    outHasilOktal();
                    break;
                case 3:
                    outTerbilang();
                    break;
                case 4:
                    hasilPecahan();
                    break;
                case 5:
                    menuJOption();
                case 6:
                    System.exit(0);
                    default:
                    // jika kita disini ada kesalahan
                    JOptionPane.showMessageDialog(null,
                     "hatur nuhun :)");
                    System.exit(0);  
            }
        }
    }

    public static void main(String[] args) {
        menuJOption();

    }
}



Setelah coding diatas diketik sampai selesai, untuk menjalankan programnya tekan di keyboard Shift+f6. Dibawah ini adalah hasil tampilan dari coding diatas !
  • ini untuk tampilan pengisian nama


*Jika kita mengcancel kan untuk tidak mengisi nama, dan untuk pengisian nama tidak boleh mengunakan angka maka akan menampilkan seperti dibawah* 
 
  • Setelah pengisian nama selesai, klik OK dan akan muncul seperti ini (pilihan Jenis Kelamin)

*Caranya seperti pengisian nama, jika kita mengcancel maka akan menampilkan dibawah ini*

*saat pengisian jenis kelamin dalam pengejaan salah atau selain pilihan, maka akan menampilkan seperti ini. jadi harus sama dengan perintahnya :)*
  • Setelah mengisi, klik OK lagi akan muncul pilihan menu untuk bilangan HEXA, OKTAL, BINER, PECAHAN, PEMBILANG, BACK dan EXIT.
  • Jika kita pilih biner, akan muncul seperti dibawah ini, dan hasilnya dibawah .
     
  •  Kembali ke pilihan menu Konversi Bilangan. Jika pilih hexa akan tampil seperti ini
  • Setelah mengisi klik OK akan muncul seperti ini
     
  • Dan akan tampil juga disini
  • Kembali ke pilihan menu Konversi Bilangan lagi. Jika Pilih Oktal maka akan tampil seperti ini
      
     
  • Hasilnya seperti ini
 
  • Jika pilih terbilang,  maka akan tampil seperti ini


  • Setelah mengisi pilih OK dan hasilnya dibawah ini :)

  • Jika pilih pecahan tampilan seperti dibawah ini


  • Hasilnya seperti ini

SELAMAT MENCOBA YA :)

1 komentar:

Yudha Vanelo mengatakan...

eh artikelnya bagus ... yg punya juga cantik pula :D kunjung alik ya www.vaneloku.blogspot.com