BLANTERORBITv102

    Cara Membuat Program Menghitung Nilai Mahasiswa Dengan Java GUI

    Selasa, 14 Juli 2015
    Tutorial Java kali ini adalah membuat Program Penghitung Nilai Mahasiswa namun menggunakan GUI bukan berbasis Text lagi. Adapun yang harus kita ketahui yaitu komponen-komponen pada GUI. Software IDE seperti netbeans sangat memberikan kemudahan bagi pengembang aplikasi ataupun bagi orang-orang yang sedang belajar pemrograman java. Software ini telah memberikan komponen-komponen GUI seperti Textfield , Button , Label , dll yang berada pada palette. Untuk lebih jelasnya pembahasan mengenai komponen Java GUI pada IDE Netbeans bisa dilihat di postingan Macam-Macam dan Kegunaan Komponen GUI Pada Netbeans.

    Langsung saja pada tutorial , pertama yang kita lakukan adalah membuat project baru , tekan CTRL+SHIFT+N pada keyboad, pilih Java Application , klik Next.
    Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Lalu buat nama project nya dan hapus ceklis pada Create Main Class dan klik finish.
    Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Buatlah Package baru , silahkan perhatikan Gambar 3.
    Program Menghitung Nilai Mahasiswa Dengan Java GUI

    Berinama package tersebut
    Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Pada package yang telah kita buat, kemudian buat sebuah frame gui.
    Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Beri nama JFrame Form tersebut.
    Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Langsung saja pada frame yang tampil , masukan 3 panel yang terdapat pada palette. Dimana panel tersebut digunakan untuk judul program , input nilai dan output nilai.
    Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Selanjutnya masukan JTextField , JLable dan JComboBox pada palette ke Frame , sehingga kurang lebih seperti gambar dibawah setelah mengganti text defaultnya.
    Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Selanjutnya memberi variable , untuk variable bisa samakan dengan variable yang saya buat :
    Program Menghitung Nilai Mahasiswa Dengan Java GUI
    jTextField1 = txtNama
    jTextField2 = txtNim
    jTextField3 = txtNilaiTgs
    jTextField4 = txtNilaiKuis
    jTextField5 = txtNilaiUts
    jTextField6 = txtNilaiUas
    jLable9 = outNama
    jLabel11 = outNim
    jLabel13 = outRerata
    jLabel15 = outGrade
    jLable17 = outKeterangan
    jButton1 = hitung
    jButton2 = reset
    jButton3 = simpan

    Untuk merubah variable , klik kanan pada komponen > pilih Change Variable Name > masukan nama variable baru dan OK.

    Hapus text pada jLabel9 , jLabel11 , jLabel13 , jLabel15 dan jLabel17 sehingga menjadi seperti gambar berikut :
    Selanjutnya kita akan memasukan kode program untuk menghitung nilai, klik kanan pada button hitung pilih Event , pilih Action dan klik actionPerformed.
    Kode program hitung akan di tulis di pada bagian ini, hapus komentar //TODO add your ....... dan replace dengan kode programnya.

    Berikut kode programnya :
    //untuk rerata   
            String nama = txtNama.getText();
            String nim = txtNim.getText();
            if (txtNilaiTgs.getText().isEmpty()||txtNilaiKuis.getText().isEmpty()|| txtNilaiUts.getText().isEmpty()||txtNilaiUas.getText().isEmpty()){
                JOptionPane.showMessageDialog(null, "Maaf , form masih kosong");
            }
            else {
                Double rerata = (Double.parseDouble(txtNilaiTgs.getText())+
    Double.parseDouble(txtNilaiKuis.getText())+
                        Double.parseDouble(txtNilaiUts.getText())+Double.parseDouble (txtNilaiUas.getText()))/4;
                outRerata.setText(rerata.toString().substring(0,5));
                outNama.setText(nama);
                outNim.setText(nim);
            }
            //Untuk grade
            Double a = Double.parseDouble(outRerata.getText());
            char grade=' ';
            if (a >= 90.00){
                grade = 'A';
                outGrade.setText(""+grade);
            }
            else if (a >= 80.00 && a <=89.00 ){
                grade ='B';
                outGrade.setText(""+grade);
            }
            else if (a >= 70.00 && a <= 79.00){
                grade = 'C';
                outGrade.setText(""+grade);
            }
            else if (a >= 40.00 && a <= 69.00){
                grade = 'D';
                outGrade.setText(""+grade);
            }
            else if (a <= 39.00){
                grade = 'E';
                outGrade.setText(""+grade);
            }
            //keterangan
            if (grade == 'A' || grade =='B' || grade == 'C'){
               
                outKeterangan.setText("Dinyatakan Lulus");
            }
            else {
                outKeterangan.setText("Dinyatakan Tidak Lulus");
            }
    Coba run program yang dibuat dengan tekan Shift+F6 pada keyboard,
    Gambar-15 : Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Selanjutnya kita akan menulis kode program reset, beri action pada tombol reset dan masukan kode program berikut :
            txtNama.setText(null);
            txtNim.setText(null);
            txtNilaiTgs.setText(null);
            txtNilaiKuis.setText(null);
            txtNilaiUts.setText(null);
            txtNilaiUas.setText(null);
            outNama.setText(null);
            outNim.setText(null);
            outRerata.setText(null);
            outGrade.setText(null);
            outKeterangan.setText(null);
    Kode program berikutnya adalah tombol simpan , disini data akan di export ke dalam bentuk file txt.
            try {
                BufferedWriter simpan = new BufferedWriter (new FileWriter("nilai.txt"));
                String hasil = "Nama : \t"+outNama.getText()+"\n"+
                                "Nim : \t"+outNim.getText()+"\n"+
                                "Rata-rata :\t"+outRerata.getText()+"\n"+
                                "Grade : \t"+outGrade.getText()+"\n"+
                                "Keterangan : \t"+outKeterangan.getText();
                simpan.write(hasil);
                JOptionPane.showMessageDialog(null,"Data berhasil disimpan");
                simpan.close();
            }
            catch (Exception e){
                JOptionPane.showMessageDialog(null ,e);
            }
    Jalankan kembali program dan lihat hasil export data nya pada folder NetbeansProject/menghitungNilaiMhs/ dengan nama file nilai.txt.
    Gambar-16 : Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Gambar-17 : Program Menghitung Nilai Mahasiswa Dengan Java GUI
    Sekian tutorial untuk membuat Program Menghitung Nilai Mahasiswa Dengan Java GUI , masih banyak tutorial lain yang akan saya share.
    Video tutorial Program Menghitung Nilai Mahasiswa Dengan Java GUI

    Terimakasih sudah berkesempatan untuk menimba ilmu dari blog JSC, semoga ilmu yang di share dapat bermanfaat. Jika ada pertanyaan mengenai ilmu yang terkait ataupun tidak, mari kita berdiskusi di dalam kolom komentar ini.

    Keep Learning and Keep Sharing

    1. gimana tu cara buat background untk code program java nya bang?
      :bingung

      BalasHapus
      Balasan
      1. Kalau untuk background gambar bisa pakai jLabel Gik yang mudahnya , tapi kalo warna bisa pakai panel aja.

        Hapus
    2. bukan background itunya bang..background script java yg bisa di copy tu yg warna hijo putih garis2..gmna cara bikinnya ?

      BalasHapus
    3. Mantap...
      Tapi kalau untuk menghitung ipk akhir, bagaimana bang.?
      boleh tidak dibuat projeknya..
      soalnya lagi butuh contoh nihh...

      BalasHapus
    4. Terima Kasih Admin
      sangat ngebantu :)

      BalasHapus
    5. maaf mau tanya, apakah di gui bisa dikombinasikan dengan menggunakan perulangan do while?

      BalasHapus
    6. Maaf komandan, saya muncul error ini ketika execute hitung

      Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: JOptionPane.showMessageDialog
      at gui.hitungNilaiMHS.hitungActionPerformed(hitungNilaiMHS.java:278)
      at gui.hitungNilaiMHS.access$000(hitungNilaiMHS.java:12)
      at gui.hitungNilaiMHS$1.actionPerformed(hitungNilaiMHS.java:97)
      at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
      at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
      at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
      at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
      at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
      at java.awt.Component.processMouseEvent(Component.java:6525)
      at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
      at java.awt.Component.processEvent(Component.java:6290)
      at java.awt.Container.processEvent(Container.java:2234)
      at java.awt.Component.dispatchEventImpl(Component.java:4881)
      at java.awt.Container.dispatchEventImpl(Container.java:2292)
      at java.awt.Component.dispatchEvent(Component.java:4703)
      at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
      at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
      at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
      at java.awt.Container.dispatchEventImpl(Container.java:2278)
      at java.awt.Window.dispatchEventImpl(Window.java:2739)
      at java.awt.Component.dispatchEvent(Component.java:4703)
      at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
      at java.awt.EventQueue.access$400(EventQueue.java:97)
      at java.awt.EventQueue$3.run(EventQueue.java:697)
      at java.awt.EventQueue$3.run(EventQueue.java:691)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
      at java.awt.EventQueue$4.run(EventQueue.java:719)
      at java.awt.EventQueue$4.run(EventQueue.java:717)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
      Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: JOptionPane.showMessageDialog
      at gui.hitungNilaiMHS.hitungActionPerformed(hitungNilaiMHS.java:278)
      at gui.hitungNilaiMHS.access$000(hitungNilaiMHS.java:12)
      at gui.hitungNilaiMHS$1.actionPerformed(hitungNilaiMHS.java:97)
      at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
      at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
      at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
      at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
      at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)


      Mohon bantuannya

      BalasHapus
      Balasan
      1. coba di cek variabel sama library yang di gunakan.

        Hapus
    7. Update dong, Jika kita inputkan Nilai UAS/Tugas/UTS lebih dari 100 dan program error gimana?

      Scriptnya giamana biar bisa caranya gitu?

      BalasHapus
      Balasan
      1. buat saja if(salahsatunilai > 100) {System.out.print("Nilai Terlalu Besar. Hanya bisa 1-100")}

        bisa di kostum pakai joptionpane gan .

        Hapus
    8. bang, kalo nilai nya sama semua kok hasilnya gk keluar y?
      sama kalo diatas nya rata-rata diberi jumlah nilai, code nya gmn bang?

      BalasHapus
    9. bang mau tanya kalo dibuat di intelej idea bisa ? terima kasih

      BalasHapus