/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


import JSplitDmeo.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author I'msimple
 */
public class DemoJTable {
    
    JFrame frame;
    JPanel jpnLeft,jpnRight;
    JSplitPane jsp00;
    JSplitPane jsp01;
    JTable jtb;
    DefaultTableModel table ;
    
    JScrollPane jsc;
    LayoutManager border;
    Vector<String> vec;
    JButton jbtThem,jbtXoa;
    

    public DemoJTable(String text) {
        
        initContainer();
        
        initComponent();
        
        setAction();
        frame.setTitle(text);
        frame.setVisible(true);
    }

    private void setAction() {
    	
    	//Them du lieu moi lần nhấn button
        jbtThem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                vec.add("15d9");
                vec.add("Le Minh Hiep");
                vec.add("20");
                table.addRow(vec);
                
            }
        });
        
        
        ///Cick vao de xoa dong
        jbtXoa.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int row = jtb.getSelectedColumnCount();
                if(row==-1) return;
                table.removeRow(row);
                
                
                
            }
        });
        
        
        
        //Mỗi lần click vào từng dòng thì hiển thị thông tin chi tiết
       jtb.addMouseListener(new MouseListener() {
           
           
            @Override
            public void mouseClicked(MouseEvent e) {
                int row = jtb.getSelectedRow();
                if(row==-1) return;
                
                String ma = jtb.getValueAt(row,0) + "";
                 String ten = jtb.getValueAt(row,1) + "";
                  String tuoi = jtb.getValueAt(row,2) +"";
                  
                  JOptionPane.showMessageDialog(null,"Code : "+ma + "Name :"+ten + "Age  : "+tuoi);
                
            }

            @Override
            public void mousePressed(MouseEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void mouseExited(MouseEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

           

            

            
        });
        
        
        
    }
    private void initContainer() {
          frame = new JFrame();
        frame.setLayout(new BorderLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,600);
        frame.setLocationRelativeTo(null);
    }

    private void initComponent() {
    	
    	//Chia panel thành 2 phần left , right
       // Thêm table vào jpnRight
        jpnLeft = new JPanel();
        
        //Chinh kích thuoc cho panel
        jpnLeft.setPreferredSize(new Dimension(200, 0));
        jpnRight = new JPanel();
        jpnRight.setLayout(new BorderLayout());
        jsp00 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jpnLeft, jpnRight);
        jsp00.setOneTouchExpandable(true);
        
        
        
        
        
        
        
        //Ta chia jpnRight thanh 2 phan
        JPanel jpnTop = new JPanel();
        jpnTop.setLayout(new BorderLayout());
        JPanel jpnBottom = new JPanel();
        jsp01 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jpnTop, jpnBottom);
        //Chinh kich thuoc jpnTop lon len
        jpnTop.setPreferredSize(new Dimension(0,200));
        jsp01.setOneTouchExpandable(true);
        
        //Tao table roi them vao JPanel right
        table = new DefaultTableModel();
       
        table.addColumn("Code");
        table.addColumn("Name");
        table.addColumn("Age");
        //add du lieu bang mang tinh
        String row1 [] = {"15d1","Nguyen Van A","19" };
        String row2 [] = {"15d2","Nguyen Van B","21" };
        String row3 [] = {"15d3","Nguyen Van C","23" };
        table.addRow(row1);
        table.addRow(row2);
        table.addRow(row2);
        //add du lieu bang vector
         vec = new Vector<>();
        vec.add("15d6");
        vec.add("Nguyen Van L");
        vec.add("40");
        table.addRow(vec);
              
        
        
        //Dua JTabel vao JScrollPane
        jtb = new JTable(table);
        jsc = new JScrollPane(jtb,
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        jsc.setFont(new Font("Font.BOLD",20,20));
        
        //Tao Jbutton
        JPanel jpnButton = new JPanel(new FlowLayout());
        jbtThem = new JButton("ADD");
        jbtXoa = new JButton("REMOVE");
        jpnButton.add(jbtThem);
        jpnButton.add(jbtXoa);
                
        jpnTop.add(jsc,BorderLayout.CENTER);
        jpnTop.add(jpnButton,BorderLayout.SOUTH);
        
        
        
        
       
        
        
        
        
        
        
        
        
        
        
        
        //add cac giao dien
        frame.add(jsp00);
        jpnRight.add(jsp01,BorderLayout.CENTER);
     }

    
   public static void main(String[] args) {
        new DemoJTable("Chia đôi màn hình");
    }
    
}
