dizzyme09
dizzyme09

Reputation: 21

Can't add a data from ArrayList to a jtable

I just tried to add some data from ArrayList to a JTable using DefaultTableModel function addRow(), I loop it inside to add the data but the data didn't come out in the frame. can anyone help me? here's my code so far (the problem is in action event of the button "bt_htg" and "bt_refresh"

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.*;

public class GuiDataMhs extends JFrame implements ActionListener, ItemListener, DocumentListener{
    JLabel lbl_judul;
    JLabel lbl_findName;
    JLabel lbl_nim;
    JLabel lbl_nama;
    JLabel lbl_smt;
    JLabel lbl_mk;
    JLabel lbl_formatif;
    JLabel lbl_uts;
    JLabel lbl_uas;
    
    JTextField txt_findName;
    JTextField txt_nim;
    JTextField txt_nama;
    
    JComboBox cb_smt;
    JComboBox cb_mk;
    
    DefaultTableModel DftTabMode;
    TableRowSorter sorter;
    JTable tbl_mhs;
    JScrollPane spane;
    
    JSpinner sp_formatif;
    JSpinner sp_uts;
    JSpinner sp_uas;
    
    JButton bt_htg;
    JButton bt_refresh;
    
    GuiDataMhs(){
        getContentPane().setLayout(null);
        
        lbl_judul = new JLabel("Form Data Mahasiswa");
        lbl_findName = new JLabel("Cari Nama: ");
        lbl_nim = new JLabel("NIM: ");
        lbl_nama = new JLabel("Nama: ");
        lbl_smt = new JLabel("Semester: ");
        lbl_mk = new JLabel("MK: ");
        lbl_formatif = new JLabel("Formatif: ");
        lbl_uts = new JLabel("UTS: ");
        lbl_uas = new JLabel("UAS: ");
        
        txt_findName = new JTextField();
        txt_nim = new JTextField();
        txt_nama = new JTextField();
        
        String columns[]= {"Nama", "NIM", "Semester", "MK", "Formatif", "UTS", "UAS", "Nilai Mutu", "Nilai Huruf"};
        DftTabMode = new DefaultTableModel(columns, 0);
        sorter = new TableRowSorter<>(DftTabMode);
        tbl_mhs = new JTable(DftTabMode);
        tbl_mhs.setRowSorter(sorter);
        spane = new JScrollPane(tbl_mhs);
                
        
        cb_smt = new JComboBox();
        cb_mk = new JComboBox();
        
        sp_formatif = new JSpinner();
        sp_uts = new JSpinner();
        sp_uas = new JSpinner();
        
        bt_htg = new JButton("Hitung");
        bt_refresh = new JButton("Refresh");
        
        lbl_judul.setFont(new Font("Tahoma", Font.BOLD, 18));
        lbl_judul.setBounds(10, 11, 199, 22);
        getContentPane().add(lbl_judul);
        
        lbl_findName.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lbl_findName.setBounds(10, 41, 61, 22);
        getContentPane().add(lbl_findName);
        
        txt_findName.setFont(new Font("Tahoma", Font.PLAIN, 12));
        txt_findName.setBounds(81, 41, 154, 22);
        txt_findName.setDocument(new onlyLetter().getOnlyLetter());
        getContentPane().add(txt_findName);
        txt_findName.getDocument().addDocumentListener(this);
        
        spane.setBounds(10, 74, 870, 125);
        getContentPane().add(spane);
        
        lbl_nim.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lbl_nim.setBounds(10, 225, 84, 22);
        getContentPane().add(lbl_nim);
        
        txt_nim.setFont(new Font("Tahoma", Font.PLAIN, 12));
        txt_nim.setBounds(94, 225, 310, 22);
        txt_nim.setDocument(new onlyDigit().getOnlyDigit());
        getContentPane().add(txt_nim);
        
        lbl_nama.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lbl_nama.setBounds(10, 258, 84, 22);
        getContentPane().add(lbl_nama);
        
        txt_nama.setFont(new Font("Tahoma", Font.PLAIN, 12));
        txt_nama.setBounds(94, 258, 310, 22);
        txt_nama.setDocument(new onlyLetter().getOnlyLetter());
        getContentPane().add(txt_nama);
        
        lbl_smt.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lbl_smt.setBounds(10, 291, 84, 22);
        getContentPane().add(lbl_smt);
        
        cb_smt.setFont(new Font("Tahoma", Font.PLAIN, 12));
        cb_smt.addItem("Semester 1");
        cb_smt.addItem("Semester 2");
        cb_smt.setSelectedItem(null);
        cb_smt.setBounds(94, 291, 310, 22);
        getContentPane().add(cb_smt);
        cb_smt.addItemListener(this);
        
        lbl_mk.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lbl_mk.setBounds(10, 324, 84, 22);
        getContentPane().add(lbl_mk);
        
        cb_mk.setFont(new Font("Tahoma", Font.PLAIN, 12));
        cb_mk.setSelectedItem(null);
        cb_mk.setBounds(94, 324, 310, 22);
        getContentPane().add(cb_mk);
        
        lbl_formatif.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lbl_formatif.setBounds(498, 225, 90, 22);
        getContentPane().add(lbl_formatif);
        
        sp_formatif.setBounds(592, 225, 115, 22);
        getContentPane().add(sp_formatif);
        
        lbl_uts.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lbl_uts.setBounds(498, 258, 90, 22);
        getContentPane().add(lbl_uts);
        
        sp_uts.setBounds(592, 258, 115, 22);
        getContentPane().add(sp_uts);
        
        lbl_uas.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lbl_uas.setBounds(498, 291, 90, 22);
        getContentPane().add(lbl_uas);
        
        sp_uas.setBounds(592, 291, 115, 22);
        getContentPane().add(sp_uas);
        
        bt_htg.setFont(new Font("Tahoma", Font.BOLD, 12));
        bt_htg.setBounds(592, 324, 85, 22);
        getContentPane().add(bt_htg);
        
        bt_htg.addActionListener(this);
        
        bt_refresh.setFont(new Font("Tahoma", Font.BOLD, 12));
        bt_refresh.setBounds(695, 324, 85, 22);
        getContentPane().add(bt_refresh);
        
        bt_refresh.addActionListener(this);
    }
    
    public String checkIfEmpty() {
        String result = "";
        if(txt_nim.getText().trim().equals("")) {
            result = "NIM mahasiswa harus diisi!";
        }else if(txt_nama.getText().trim().equals("")) {
            result = "Nama mahasiswa harus diisi!";
        }else if(cb_smt.getSelectedIndex() == -1) {
            result = "Semester mahasiswa harus dipilih!";
        }else if(cb_mk.getSelectedIndex() == -1) {
            result = "Mata kuliah mahasiswa harus dipilih!";
        }else if((Integer)sp_formatif.getValue() == 0) {
            result = "Nilai formatif harus diisi!";
        }else if((Integer)sp_uts.getValue() == 0) {
            result = "Nilai UTS harus diisi!";
        }else if((Integer)sp_uas.getValue() == 0) {
            result = "Nilai UAS harus diisi!";
        }else {
            result = "valid";
        }
        return result;
    }
    
    @Override
    public void actionPerformed(ActionEvent ev) {
        ArrayList<String> list = new ArrayList<String>();
        if(ev.getSource().equals(bt_htg)) {
            
            String check = checkIfEmpty();
            if(check.equals("valid")) {
                String formatif, uts, uas, mutu, nama, nim, semester, matkul, huruf;
                HitungNilaiMhs htg = new HitungNilaiMhs();
                nama = txt_nama.getText().trim();
                nim = txt_nim.getText().trim();
                semester = (String) cb_smt.getSelectedItem();
                matkul = (String) cb_mk.getSelectedItem();
                formatif = String.valueOf(sp_formatif.getValue());
                uts = String.valueOf(sp_uts.getValue());
                uas = String.valueOf(sp_uas.getValue());
                
                mutu = htg.htg_nilaiMutu(formatif, uts, uas);
                huruf = htg.nl_huruf();
                
                String item[] = {nama, nim, semester, matkul, formatif, uts, uas, mutu, huruf};
//              DftTabMode.addRow(item);
                
                for(int i=0;i<9;i++) {
                    list.add(item[i]);
                }

                txt_nama.setText("");
                txt_nim.setText("");
                cb_smt.setSelectedItem(null);
                cb_mk.setSelectedItem(null);
                sp_formatif.setValue(0);
                sp_uts.setValue(0);
                sp_uas.setValue(0);
                
                JOptionPane.showMessageDialog(null, "Data berhasil diproses");
            }else {
                JOptionPane.showMessageDialog(null, check);
            }
        }else if(ev.getSource().equals(bt_refresh)) {
//          DftTabMode.setRowCount(0);
            for(int i=0;i<list.size()/9;i++) {
                DftTabMode.addRow(new Object[] {list.get(i*9),
                        list.get(i*9+1),
                        list.get(i*9+2),
                        list.get(i*9+3),
                        list.get(i*9+3),
                        list.get(i*9+4),
                        list.get(i*9+5),
                        list.get(i*9+6),
                        list.get(i*9+7),
                        list.get(i*9+8)
                });
            }
            list.clear();
            JOptionPane.showMessageDialog(null, "Data berhasil direfresh");
        }
    }
    
    public void itemStateChanged(ItemEvent ev) {
        try {
            if(cb_smt.getSelectedItem().equals("Semester 1")) {
                cb_mk.removeAllItems();
                cb_mk.addItem("Kalkulus 1");
                cb_mk.addItem("Elektronika Dasar");
                cb_mk.addItem("Studi Islam");
                cb_mk.addItem("Matematika Diskrit");
                cb_mk.addItem("Pendidikan Pancasila dan Kewarnegaraan");
                cb_mk.addItem("Dasar-dasar Pemrograman");
                cb_mk.addItem("Pengantar Teknologi Informasi dan Komunikasi");
                cb_mk.setSelectedItem(null);
            }else if (cb_smt.getSelectedItem().equals("Semester 2")){
                cb_mk.removeAllItems();
                cb_mk.addItem("Statistika Elementer");
                cb_mk.addItem("Sistem Digital");
                cb_mk.addItem("Praktikum Qiroah dan Ibadah");
                cb_mk.addItem("Pemrograman Lanjut");
                cb_mk.addItem("Kalkulus 2");
                cb_mk.addItem("Islam dan Ilmu Pengetahuan");
                cb_mk.addItem("Bahasa Indonesia");
                cb_mk.addItem("Aljabar Linier");
                cb_mk.setSelectedItem(null);
            }
        }catch(Exception ex) {
            ex.getMessage();
        }
    }
    
    public void search(String str) {
        if(str.length()==0) {
            sorter.setRowFilter(null);
        }else {
            sorter.setRowFilter(RowFilter.regexFilter(str));
        }
    }
    
    @Override
    public void insertUpdate(DocumentEvent e) {
        search(txt_findName.getText());
    }
    
    @Override
    public void removeUpdate(DocumentEvent e) {
        search(txt_findName.getText());
    }
    
    @Override
    public void changedUpdate(DocumentEvent e) {
        search(txt_findName.getText());
    }
    
    public static void main(String[] args) {
        GuiDataMhs frame = new GuiDataMhs();
        frame.setTitle("Aplikasi Daftar Mahasiswa");
        frame.setSize(900, 450);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

}

above is the code, as you can see on the action event I put my data to an Array List the data will be stored until the button refresh is clicked, if it's not the data will still inside the Array List and not adding the row. the problem is after I clicked the refresh button, the data wouldn't show up. please help

Upvotes: 1

Views: 57

Answers (0)

Related Questions