Header Ads

[Java] Jtable - custome jtable

Account.java
public class ACC {

    private double accNum, accMoney;
    private String accName;
    public ACC(double accNum, double accMoney, String accName) {
        super();
        this.accNum = accNum;
        this.accMoney = accMoney;
        this.accName = accName;
    }
    public ACC() {
        this(0, 0, "No Name");
    }
    public double getAccNum() {
        return accNum;
    }
    public void setAccNum(double accNum) {
        this.accNum = accNum;
    }
    public double getAccMoney() {
        return accMoney;
    }
    public void setAccMoney(double accMoney) {
        this.accMoney = accMoney;
    }
    public String getAccName() {
        return accName;
    }
    public void setAccName(String accName) {
        this.accName = accName;
    }
    @Override
    public String toString() {
        return "ACC [accNum=" + accNum + ", accMoney=" + accMoney
                + ", accName=" + accName + "]";
    }
}

AccModelTable.java

package thanhcs.bai20;

import java.io.FileNotFoundException;
import java.util.Formatter;
import java.util.Vector;

import javax.swing.table.AbstractTableModel;

public class AccModelTable extends AbstractTableModel{
        
    private Vector<ACC> vtacc;
    private String[] titleAcc = {"Acc Number", "Acc Name", "Acc Money"};
    Formatter x;
    String name;
    double money;
String txt;
    public AccModelTable(Vector<ACC> vtacc){
        super();
        this.vtacc = vtacc;
        
    }

    @Override
    public int getColumnCount() {
        return titleAcc.length;
    }
    

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


    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        ACC a = vtacc.get(rowIndex);
        switch (columnIndex) {
        case 0:
            a.setAccNum((Double)aValue);
            break;
        case 1:
            a.setAccName((String) aValue);
            break;
        case 2:
            a.setAccMoney((Double)aValue);
            break;

        default:
            break;
        }
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        ACC a = vtacc.get(rowIndex);
        switch (columnIndex) {
        case 0:
            
            return a.getAccNum();
        case 1:
            
        return a.getAccName();
        case 2:
            return a.getAccMoney();

        default:
            break;
        }


        return null;
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return getValueAt(0, columnIndex).getClass();
    }

    @Override
    public String getColumnName(int column) {
        return titleAcc[column];
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        // TODO Auto-generated method stub
        return super.isCellEditable(rowIndex, columnIndex);
    }

    public  void in()
    {
        int rows =  this.getRowCount();
        int cols = this.getColumnCount();
        
        for (int i = 0 ; i  < rows ; i++)
        {
            System.out.println(i+1+"-");
            {
                for(int j = 0 ; j <cols ; j++)
                {
                    String columname =  this.getColumnName(j);
                    Object mObject = this.getValueAt(i, j);
                    if(columname.equalsIgnoreCase("Acc Money"))
                    {
                        Double a = (Double)mObject;
                        money =  a.doubleValue();
                        System.out.print("\t"+money +" $");
                    }
                    else
                    {
                        System.out.print("\t"+mObject); 
                        
                        try {
                            x=  new Formatter("thanhcs.txt");
                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            System.out.println("erro");
                        }
                    //     txt += (String) mObject;
                        x.format("%s" , mObject);
                    
                    }
                    
                    
                    
                    
                }
            }
        }
        dongfile();
    }

    private void dongfile() {
        x.close();
        
    }


}



Bai20_Jtable.java //main

package thanhcs.bai20;

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

import javax.crypto.Mac;
import javax.swing.BorderFactory;
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.border.TitledBorder;
import javax.swing.table.DefaultTableModel;

public class Bai20_Jtable extends JFrame implements ActionListener{

    
    Vector<ACC>vtacc;
    ACC mACC;
    JTable jtable;
    AccModelTable accModel;
    JButton add, clear, exit;
    JTextField txtnum, txtname, txtmoney;
    
    public Bai20_Jtable() {
        // TODO Auto-generated constructor stub
        setLayout(new BorderLayout());
        setGiaoDien();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);        
        setSize(400, 400);
        validate();
    }
    
    private void setGiaoDien() {
        
        vtacc = new Vector<>();
        for(int i = 0 ; i  < 3; i++)
        {
            mACC = new ACC();
            mACC.setAccNum(i);
            mACC.setAccName("Name "+i);
            mACC.setAccMoney(100*i+69);
            vtacc.addElement(mACC);
        }
        accModel = new  AccModelTable(vtacc);
        /*--------------------------------------------------
        *Suli giao dien
        *---------------------------------------------------*/
        JPanel jptop = new JPanel();
        JPanel jpcenter = new JPanel();
        JPanel jpbotton = new JPanel();
        
        /*
         * su li top
         */
        jptop.setLayout(new GridLayout(3, 2, 7, 7));
        jptop.setBorder(new TitledBorder(BorderFactory.createLineBorder(Color.RED), "Fill it"));
        jptop.add(new JLabel("Account Number : "));
        jptop.add(txtnum = new JTextField(10));
        jptop.add(new JLabel("Account Name : "));
        jptop.add(txtname = new JTextField(10));
        jptop.add(new JLabel("Account Money : "));
        jptop.add(txtmoney = new JTextField(10));
        add(jptop, BorderLayout.NORTH);
        
        /*
         * su li center
         */
        jtable = new JTable(accModel);
        add(new JScrollPane(jtable), BorderLayout.CENTER);
        //add(jpcenter, BorderLayout.CENTER);
        
        /*
         * su li botton
         */
        jpbotton.setBorder(new TitledBorder(BorderFactory.createLineBorder(Color.YELLOW), "Control"));
        jpbotton.add(add = new JButton("ADD"));
        jpbotton.add(clear = new JButton("CLEAR"));
        jpbotton.add(exit = new JButton("EXIT"));
        add(jpbotton, BorderLayout.SOUTH);
        add.addActionListener(this);
        exit.addActionListener(this);
        
    }

    public static void main(String[] args) {
        new Bai20_Jtable();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==add)
        {
            mACC = new ACC();
            mACC.setAccNum(Double.parseDouble(txtnum.getText().toString()));
            mACC.setAccName(txtname.getText().toString());
            mACC.setAccMoney(Double.parseDouble(txtmoney.getText().toString()));
            vtacc.addElement(mACC);
            jtable.revalidate();
        //    JOptionPane.showMessageDialog(null, mACC.toString());
        }
        
        if(e.getSource()==exit)
        {
            accModel.in();
            System.exit(0);
        }
    }
}

No comments:

Powered by Blogger.