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
  10. Bg bagian simpan nya knpa error ya

    BalasHapus