CLICK HERE FOR FREE BLOGGER TEMPLATES, LINK BUTTONS AND MORE! »

Rabu, 12 September 2012

Menu Dari JOption

Pada kali ini, saya akan menjelaskan sedikit tentang Menu Dari JOption yang terdapat pada java.
Berikut coding Menu Dari JOption tersebut


package Praktek1;

import javax.swing.JOptionPane;

/**
 *
 * @author Nadya Ayu
 */
public class MenuDariJOption {

     private static String name;
           private static String des;
           private static String gender;
           private static String kelamin;
           private static int validDes;
           static StringBuilder binerHasil = new StringBuilder();
           static StringBuilder hexaHasil = new StringBuilder();
           static StringBuilder oktalHasil = new StringBuilder();
           static String sc;

           public static void SelamatDatang() {
                 JOptionPane.showMessageDialog(null, "Selamat Datang di Aplikasi Ini :) ") ;
           }

           public static void keBiner(int n) {
                 if (n > 1) {
                     keBiner(n / 2);
                 }

              System.out.print(n % 2);
              binerHasil.append(n % 2);
              // binerHasil.append("\033");
          }

           public static void keHexa(int n) {//int n : parameter
                 char[] daftarHexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
                        if (n > 0) {
                           keHexa(n / 16);
                           System.out.print(daftarHexa[n % 16]);
                           hexaHasil.append(daftarHexa[n % 16]);
                       }
            }

            public static void keOktal(int n) {
                  char[] daftarOktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
                         if (n > 0) {
                            keOktal(n / 8);
                            System.out.print(daftarOktal[n % 8]);
                            oktalHasil.append(daftarOktal[n % 8]);
                  }
             }
            public static void inputDesJOption() {
              des = JOptionPane.showInputDialog("Masukkan Bilangan Desimal : ");
              try {
                        if (des.isEmpty()) {
                                JOptionPane.showMessageDialog(null, "Bilangan Desimalnya wajib diisi !!");
                                inputDesJOption();
              }

        } catch (NullPointerException npa) {
                 JOptionPane.showMessageDialog(null, "Wajib Diisi");
                 inputDesJOption();
        }
                 public static void outHasilBiner() {
             inputDesJOption();
             try {//untuk melakukan penanganan kesalahan
                  validDes = Integer.parseInt(des);
                  System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : ");
                  keBiner(validDes);
                  System.out.println("\n");
                  JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : " + binerHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
                 // reset object binerHasil
                 binerHasil = new StringBuilder();

        } catch (NumberFormatException nfe) {
                JOptionPane.showMessageDialog(null, "'" + des + "'"
                         + " .... bukan angka !!"
                         + "\nMasukkan angka saja !!");
               outHasilBiner();
           }
      }
      public static void outHasilHexa() {
             inputDesJOption();
             try {//untuk melakukan penanganan kesalahan
                 validDes = Integer.parseInt(des);
                 System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : ");
                  keHexa(validDes);
                  System.out.println("\n");
                  JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : " + hexaHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
                  hexaHasil = new StringBuilder();
               } catch (NumberFormatException nfe) {
                    JOptionPane.showMessageDialog(null, "'" + des + "'"
                         + " .... bukan angka !!"
                         + "\nMasukkan angka saja !!");
                    outHasilHexa();
                 }
      }

   public static void outHasilOktal() {
            inputDesJOption();
            try {//untuk melakukan penanganan kesalahan
                 validDes = Integer.parseInt(des);
                 System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : ");
                 keOktal(validDes);
                 System.out.println("\n");
                 JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
                 oktalHasil = new StringBuilder();
           } catch (NumberFormatException nfe) {
                   JOptionPane.showMessageDialog(null, "'" + des + "'"
                         + " .... bukan angka !!"
                         + "\nMasukkan angka saja !!");
                   outHasilOktal();
               }
      }
//menampilkan input dialog nama
        public static void inpNama() {
              name = JOptionPane.showInputDialog("Masukkan nama Anda : ");
              try {
                     if (name.isEmpty()) {
                              JOptionPane.showMessageDialog(null, "Nama Tidak Boleh Kosong");
                              inpNama();
                    }
                    else{
                           for(int i=0;i<name.length();i++{
                                if(!Character.isLetter(name.charAt(i))){
                                      JOptionPanr.showMessageDialog(null,"gak boleh alay !");
                                      inpNama();
                                }
                            }
                       }

              } catch (NullPointerException npe) {
                     JOptionPane.showMessageDialog(null, "Harap Diisi Nama Terlebih Dahulu!");
                     inpNama();
              }
    }
    //menampilkan input dialog jenis Kelamin (gender)

    public static void jenisKelamin() {
              gender = JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (cowok/cewek) : ");
              try {
                        if (gender.isEmpty()) {
                                JOptionPane.showMessageDialog(null, "Jenis Kelamin Harus Diisi");
                                jenisKelamin();
                       }
              } catch (NullPointerException npt) {
                       JOptionPane.showMessageDialog(null, "Apa Jenis Kelamin Anda");
                       jenisKelamin();
        }
        if ("cowok".equals(gender)) {
                kelamin = "Saudara, ";
       } else {
                if ("cewek".equals(gender)) {
                        kelamin = "Saudari, ";
                } else {
                        JOptionPane.showMessageDialog(null, "Hanya bisa diisi cowok dan cewek saja !!");
                        jenisKelamin();
                }
         }

    }
    //Terbilang
    String[] angka = {"", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas"};

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

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

    public static void outTerbilang() {
            sc = JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
            try {
                     if (sc.isEmpty()) {
                            JOptionPane.showMessageDialog(null, "Isi Bilangan");
                            outTerbilang();
                     } else {

                              JOptionPane.showMessageDialog(null, new MenuDariJOption().Terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
                     }
          } catch (NullPointerException not) {
                      JOptionPane.showMessageDialog(null, "Jangan keluar, Harus Diisi !!");
                      outTerbilang();
          } catch (NumberFormatException nae) {
                     JOptionPane.showMessageDialog(null, "Hey '" + sc + "'"
                                + " .... bukan angka !!"
                                + "\nHanya Masukkan Angka Saja !!");
                    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 !!");
                           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", 
                   }
        } catch (NullPointerException not) {
                   JOptionPane.showMessageDialog(null, "Harap Diisi Bilangannya !!");
                   hasilPecahan();
        } catch (NumberFormatException nae) {
                  JOptionPane.showMessageDialog(null, "Hey '" + str + "'"
                               + " .... Bukan Angka"
                               + "\nHanya Masukkan Angka");
                  hasilPecahan();
        }
  }
public static void kembaliMenu() {
                inpNama();
                jenisKelamin();
        }
public static void menuJOption() {
               inpNama();
               jenisKelamin();
               String[] pilihan = {"BINER", "HEXA", "OKTAL", "TERBILANG", "PECAHAN", "KEMBALI", "KELUAR"};
              while (true) {
                           int response = JOptionPane.showOptionDialog(
                                        null, "Selamat Datang " + kelamin + name + " !!"
                                        + "\nPilih Konversi Bilangan dibawah ini?"// Pesan
                                         , "Konversi Bilangan" // Judul di Tittlebar
                                         , JOptionPane.YES_NO_OPTION // Tipe Option
                                         , JOptionPane.PLAIN_MESSAGE // Tipe Pesan
                                         , null // tipe pesan
                                                   , pilihan // tombol next
                                         , null / label tombol default
                                          );
            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();
                                          break;
                           case 6:
                           case -1:
                                        JOptionPane.showMessageDialog(null, "Terima Kasih :) ");
                                         System.exit(0);
                           default:
                                         JOptionPane.showMessageDialog(null, "response salah"
                                                         + response);
                                         break;
                     }
             }
     }
public static void main(String[] args) {
             menuJOption();
     }
}



Setelah selesai membuat coding, untuk menjalankan program tersebut tekanlah Shift + F6.
Maka hasilnya akan seperti :


Jika nama belum di tulis, namun menekan OK maka akan muncul text box seperti


Namun jika menekan Cancel, akan muncul text box seperti


Jika dalam pengisian nama diberi spasi atau diberi angka



Maka akan muncul text box seperti


Setelah cobalah isi sesuai dengan nama Anda.


Setelah mengisi, lalu klik OK. Maka akan muncul text box jenis kelamin



Jika jenis kelamin belum di tulis, namun menekan OK maka akan muncul text box seperti


Namun jika menekan Cancel, akan muncul text box seperti


Jika pengisian jenis kelamin tidak cowok / cewek, maka akan muncul text box seperti


Isilah sesuai dengan jenis kelamin Anda


Kemudian tekan OK


Untuk menu pilihan Biner



Untuk menu pilihan Hexa



Untuk menu pilihan Oktal



Untuk menu pilihan Terbilang



Untuk menu pilihan Pecahan



Jika kita ingin kembali ke awal ( text box yang berisi nama ) maka pilihlah menu Kembali




Untuk keluar, pilihlah menu Keluar


Setelah menekan Keluar, maka Anda keluar dari program tersebut dan akan muncul text box seperti



Sekian codingnya. Semoga bermanfaat :)




0 komentar:

Posting Komentar