Header Ads

[Java] Custome Jtable , read data from file parse to jtable

1: Create new Project !




Student.java

-----------------------------
ackage thanhcs.javademo;

import java.io.Serializable;

public class Student implements Serializable{
    
    private int id;
    private String name;
    public Student() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Student(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + "]";
    }
    
    

}



StudentCollection.java

package thanhcs.javademo;

import java.io.Serializable;
import java.util.Vector;

import javax.swing.plaf.basic.BasicScrollPaneUI.VSBChangeListener;

public class StudentCollection implements Serializable {

    Vector<Student> vtStudent;
    public StudentCollection(Vector<Student>vtStudent) {
        // TODO Auto-generated constructor stub
        this.vtStudent = vtStudent;
    }
    
    public void addStudent(Student a)
    {
        vtStudent.add(a);
    }
    
    public Student getStudent(int i)
    {
        return vtStudent.get(i);
    }
    
    public int getNumOfSrudent()
    {
        return vtStudent.size();
    }
    
    
}


StudentTableMode.java


package thanhcs.javademo;

import javax.swing.table.AbstractTableModel;

public class StudentTableModel extends AbstractTableModel{

    StudentCollection stdCollections;
    String title[] = {"id", "name"};
    
    public StudentTableModel(StudentCollection stdCollections) {
        // TODO Auto-generated constructor stub
        this.stdCollections = stdCollections;
    }
    
    
    @Override
    public int getColumnCount() {
        // TODO Auto-generated method stub
        return title.length;
    }

    @Override
    public int getRowCount() {
        // TODO Auto-generated method stub
        return stdCollections.getNumOfSrudent();
        
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        Student a = stdCollections.getStudent(rowIndex);
        switch (columnIndex) {
        case 0:
            return a.getId();
        case 1:
            return a.getName();
        default:
            break;    
        }
        return null;
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        Student a = stdCollections.getStudent(rowIndex);
        switch (columnIndex) {
        case 0:
            a.setId((Integer)aValue);
            break;
        case 1:
            a.setName((String) aValue);
            break;
        default:
            break;
        }
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        // TODO Auto-generated method stub
        return super.getColumnClass(columnIndex);
    }

    @Override
    public String getColumnName(int column) {
        // TODO Auto-generated method stub
        return title[column];
    }



}



FILE_Process.java

package thanhcs.javademo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class FILE_Process {

    
    public void WRITE(Object obj , String filePath) throws Exception
    {
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath));
        out.writeObject(obj);
        out.close();
    }
    
    public Object READ(String filePath) throws Exception
    {
        ObjectInputStream in =  new ObjectInputStream(new FileInputStream(filePath));
        Object a = in.readObject();
        in.close();
        return a;
    }
}



MAINCLASS.java


package thanhcs.javademo;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class MAINCLASS  extends JFrame implements ActionListener, ListSelectionListener{
    
    JTextField txtID, txtName;
    JButton btnADD, btnEDIT, btnREMOVE , btnEXIT;
    StudentCollection stdCollection;
    JTable jtable;
    Vector<Student> vtStudent;
    Student studentTemp;
    StudentTableModel studentModel;
    FILE_Process fileProcess;
    String NAMEFILE = "thanhcs94";
    public MAINCLASS() {
        setGiaoDien();
        setSuKien();
        
        setSize(500, 500);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    
    
    private void setSuKien() {
    
        
    }


    private void setGiaoDien() {
        JPanel jp1 = new JPanel();
        jp1.setLayout(new BorderLayout());
        add(jp1, BorderLayout.NORTH);
        JPanel jp2 = new JPanel();
        JPanel jp3 = new JPanel();
        
        jp2.setLayout(new GridLayout(2, 2));
        jp2.add(new JLabel("ID"));
        jp2.add(txtID =  new JTextField(20));
        jp2.add(new JLabel("NAME"));
        jp2.add(txtName =  new JTextField(20));
        
        jp1.add(jp2, BorderLayout.CENTER);
        
        jp3.add(btnADD = new JButton("ADD"));
        jp3.add(btnREMOVE = new JButton("REMOVE"));
        jp3.add(btnEDIT = new JButton("EDIT"));
        jp3.add(btnEXIT = new JButton("EXIT"));
        btnADD.addActionListener(this);
        btnREMOVE.addActionListener(this);
        btnEDIT.addActionListener(this);
        btnEXIT.addActionListener(this);
        jp1.add(jp3, BorderLayout.SOUTH);
        
        
        
        
        fileProcess = new FILE_Process();
        vtStudent = new Vector<>();
        
        
        /****** RUN IT IN THE FIRST TIME YOU BUIL .WRITE DATA TO FILE ******/
    /**
        for(int i = 0 ; i < 1 ; i++)
        {
            vtStudent.add(new Student(i, "Maria Ozawa"));
        }
        
            
        try {
            fileProcess.WRITE(vtStudent, NAMEFILE);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } */
        
        //doc file
        try {
            vtStudent = (Vector<Student>) fileProcess.READ(NAMEFILE);
            stdCollection =  new StudentCollection(vtStudent);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        studentModel = new StudentTableModel(stdCollection);
        jtable = new JTable(studentModel);
        add(new JScrollPane(jtable), BorderLayout.CENTER);

        
    }


    public static void main(String[] args) {
        new MAINCLASS().setVisible(true);;
        
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==btnADD)
        {
            try {
                int  id = Integer.parseInt(txtID.getText().toString());
                String name =  txtName.getText();
                stdCollection.addStudent(new Student(id,name));
                
                jtable.revalidate();
            } catch (Exception e2) {
                JOptionPane.showMessageDialog(this, e2);
            }
            
        }
        
        if(e.getSource()==btnREMOVE)
        {
            
            int i =  jtable.getSelectedRow();
            if(i==-1)
            {
                JOptionPane.showMessageDialog(null, "unselected");
            }
            else
            {
                int result = JOptionPane.showConfirmDialog(this, "Are you sure ??", "DELETE", JOptionPane.YES_NO_OPTION);
                if(result == JOptionPane.YES_OPTION)
                {
                    vtStudent.removeElement(stdCollection.getStudent(i));
                    jtable.revalidate();
                }
                    
            }
        
            
        }
        
        if(e.getSource()==btnEDIT)
        {
            String id=null, name =null;
            int i = jtable.getSelectedRow();
            System.out.println(i+"");
            Student a = vtStudent.get(i);
            try {
                id = JOptionPane.showInputDialog("ID");
                name = JOptionPane.showInputDialog("Name");
                
                a.setId(Integer.parseInt(id));
                a.setName(name);
                vtStudent.remove(i);
                vtStudent.add(i, a);
                jtable.revalidate();
            } catch (Exception e2) {
                JOptionPane.showMessageDialog(null, "null value");
            }
        
            
        
        }
        
        if(e.getSource()==btnEXIT)
        {
            try {
                fileProcess.WRITE(vtStudent, NAMEFILE);
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            System.out.println("DA LUU DU LIEU");
            System.exit(0);
        }
        
    }


    @Override
    public void valueChanged(ListSelectionEvent e) {
        // TODO Auto-generated method stub
        
    }
    

}







No comments:

Powered by Blogger.