My Third Java Program: "Program Menghitung IP Mahasiswa"

Masih berkutat di dunia Java. Kali ini penulis mencoba bereksperimen dengan JTable.
Setelah 2-3 hari pusing ngutak-atik JTable (maklum masih newbie ^_^), nyari-nyari cara buat meng-inputkan data ke dalam tabel itu, akhirnya dapet juga petuah dari orang yang udah mahir Java di forum DIC (dreamincode.net).

Here's a sneak peek at the program :)











Berikut step by step membuat program tersebut:
1. Buatlah project baru di NetBeans.
2. Buat JFrame Form baru dan buatlah desain seperti di bawah ini.










3. Pada button "Input" tambahkan handling code berikut (dobel klik di button Input):

//Menambahkan baris baru dengan inputan dari field
        DefaultTableModel model= (DefaultTableModel)tabelNilai.getModel();
        model.addRow(new Object[]{mataKuliahField.getText(),sksField.getText(),nilaiHurufField.getText()});

        //Merubah nilai huruf menjadi nilai angka
        int nilaiAngka;
        if (nilaiHurufField.getText().equals("A")){
            nilaiAngka= 4;
        }
        else if (nilaiHurufField.getText().equals("B")){
            nilaiAngka= 3;
        }
        else if (nilaiHurufField.getText().equals("C")){
            nilaiAngka= 2;
        }
        else if (nilaiHurufField.getText().equals("D")){
            nilaiAngka= 1;
        }
        else nilaiAngka=0;

        //Menghitung jumlah nilai dan nilai SKS lalu dikalkulasikan menjadi nilai IP
        jumlahNilai= (nilaiAngka * Integer.parseInt(sksField.getText())) + jumlahNilai;
        jumlahSKS= (Integer.parseInt(sksField.getText())) + jumlahSKS;
        ip= jumlahNilai/jumlahSKS;

        //Menset ipField dengan nilai dari ip
        ipField.setText(String.valueOf(ip));

        mataKuliahField.setText("");
        sksField.setText("");
        nilaiHurufField.setText("");
    }

Untuk field mataKuliahField dan field-field lainnya sesuaikan dengan nama variabel yang anda berikan pada field anda. Selain itu jangan lupa untuk menambahkan variabel jumlahNilai, jumlahSKS, dan ip pada class tersebut dengan inisialisasi nilai nol dan beritipe double.

4. Setelah selesai jangan lupa di save lalu build project tersebut. Happy coding :)

Jika ingin mendownload project ini, silakan download disini.

Berikut source code lengkapnya:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * gpaCounterUI.java
 *
 * Created on 08 Feb 11, 9:06:35
 */

package counterPackage;

import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Gentra
 */
public class gpaCounterUI extends javax.swing.JFrame {

    private double jumlahNilai=0;
    private double jumlahSKS=0;
    private double ip=0;
    /** Creates new form gpaCounterUI */
    public gpaCounterUI() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    //                          
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        tabelNilai = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        mataKuliahField = new javax.swing.JTextField();
        sksField = new javax.swing.JTextField();
        nilaiHurufField = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        ipField = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        tabelNilai.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Mata Kuliah", "SKS", "Nilai"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(tabelNilai);
        tabelNilai.getColumnModel().getColumn(0).setResizable(false);
        tabelNilai.getColumnModel().getColumn(1).setResizable(false);
        tabelNilai.getColumnModel().getColumn(2).setResizable(false);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Input Nilai"));

        jLabel1.setText("Mata Kuliah");

        jLabel2.setText("SKS");

        jLabel3.setText("Nilai");

        jButton1.setText("Input");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel2)
                            .addComponent(jLabel3))
                        .addGap(18, 18, 18)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(mataKuliahField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE)
                            .addComponent(sksField, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE)
                            .addComponent(nilaiHurufField, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE))
                        .addGap(25, 25, 25))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addComponent(jButton1)
                        .addContainerGap())))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(23, 23, 23)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(mataKuliahField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(sksField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(nilaiHurufField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 41, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addContainerGap())
        );

        jLabel4.setText("IP Sementara");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(ipField, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 197, Short.MAX_VALUE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(ipField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(16, Short.MAX_VALUE))
        );

        pack();
    }//                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        //Menambahkan baris baru dengan inputan dari field
        DefaultTableModel model= (DefaultTableModel)tabelNilai.getModel();
        model.addRow(new Object[]{mataKuliahField.getText(),sksField.getText(),nilaiHurufField.getText()});

        //Merubah nilai huruf menjadi nilai angka
        int nilaiAngka;
        if (nilaiHurufField.getText().equals("A")){
            nilaiAngka= 4;
        }
        else if (nilaiHurufField.getText().equals("B")){
            nilaiAngka= 3;
        }
        else if (nilaiHurufField.getText().equals("C")){
            nilaiAngka= 2;
        }
        else if (nilaiHurufField.getText().equals("D")){
            nilaiAngka= 1;
        }
        else nilaiAngka=0;

        //Menghitung jumlah nilai dan nilai SKS lalu dikalkulasikan menjadi nilai IP
        jumlahNilai= (nilaiAngka * Integer.parseInt(sksField.getText())) + jumlahNilai;
        jumlahSKS= (Integer.parseInt(sksField.getText())) + jumlahSKS;
        ip= jumlahNilai/jumlahSKS;

        //Menset ipField dengan nilai dari ip
        ipField.setText(String.valueOf(ip));

        mataKuliahField.setText("");
        sksField.setText("");
        nilaiHurufField.setText("");
    }                                        

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new gpaCounterUI().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JTextField ipField;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField mataKuliahField;
    private javax.swing.JTextField nilaiHurufField;
    private javax.swing.JTextField sksField;
    private javax.swing.JTable tabelNilai;
    // End of variables declaration                   

}

Komentar

Postingan populer dari blog ini

"Program Login" Menggunakan Pascal

Program Pascal: Operasi Himpunan

How to Install Ubuntu 16.04 on MSI GE62 6QC