Header Ads

[Java ] Jlist and dialog

Bài tập 18. Thực hành về JList
Viết lớp ChiPhi với yêu cầu:
+ Thuộc tính: loại phí (String), tiền (double).
+ Viết các hàm khởi tạo.
+ Viết các hàm get/set.
+ Hàm toString(): trả về chuỗi chứa 2 thông tin là loại phí và tiền.
Thiết kế giao diện như hình dưới đây:
Yêu cầu xử lý sử dụng lớp ChiPhi:
+ Nút “Thêm”: thêm một dòng vào JList bên dưới với 2 thông tin tương ứng là Loại phí và Tiền (xem hình). Chú ý không được thêm khi:
- Không nhập đủ dữ liệu.
- Ô nhập tiền không phải số.
- Ô nhập tiền là số âm.
+ Nút “Xóa”: xóa một dòng đang chọn trên JList, yêu cầu chọn trước khi xóa và hỏi xác nhận trước khi xóa.
+ Nút “Báo cáo”: xuất ra tổng chi phí.
+ Khi chọn 1 dòng trên JList thì hiện thông tin dòng đó lên các ô nhập liệu.
+ Nút “Thoát”: đóng chương trình.








ChiPhi.java

package thanhcs.bai18;

public class ChiPhi {

    String loaiPhi;
    double tien;
    public ChiPhi(String loaiPhi, double tien) {
        super();
        this.loaiPhi = loaiPhi;
        this.tien = tien;
    }
    
    public String getLoaiPhi() {
        return loaiPhi;
    }
    
    public void setLoaiPhi(String loaiPhi) {
        this.loaiPhi = loaiPhi;
    }


    public double getTien() {
        return tien;
    }

    public void setTien(double tien) {
        this.tien = tien;
    }

    @Override
    public String toString() {
        return loaiPhi + "   " + tien;
    }

    
}

bai18.java


package thanhcs.bai18;

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

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;

public class bai18 extends JFrame implements ActionListener {

    JLabel lblLoaiPhi, lblTien;
    JTextField txtLoaiPhi, txtTien;
    JButton btnThem, btnXoa, btnBaoCao, btnThoat;
    JList listName;
    DefaultListModel listModelName;

    public bai18() {
        JPanel Jpan = new JPanel(new BorderLayout());
        JPanel north = new JPanel(new BorderLayout());

        //
        setTitle("emo JList");
        setSize(500, 400);
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        //
        JPanel pnLoaiPhi = new JPanel();
        JPanel lay = new JPanel(new GridLayout(2, 2));
        lay.add(lblLoaiPhi = new JLabel("Loại phí: "));
        lay.add(lblTien = new JLabel("Tiền "));
        txtLoaiPhi = new JTextField(15);
        lay.add(txtLoaiPhi);
        txtTien = new JTextField(15);
        lay.add(txtTien);
        Border west = BorderFactory.createLineBorder(Color.RED);
        TitledBorder ti = new TitledBorder(west, "Các loại phí");
        pnLoaiPhi.setBorder(ti);
        pnLoaiPhi.add(lay);
        north.add(pnLoaiPhi, BorderLayout.NORTH);
        Jpan.add(north, BorderLayout.WEST);

        listModelName = new DefaultListModel();
        listName = new JList(listModelName);
        north.add(new JScrollPane(listName), BorderLayout.CENTER);
        //
        JPanel East1 = new JPanel(new BorderLayout());
        JPanel Jeast = new JPanel();
        Jeast.setLayout(new BoxLayout(Jeast, BoxLayout.Y_AXIS));
        btnThem = new JButton("Thêm");
        btnXoa = new JButton("Xoá");
        btnBaoCao = new JButton("Báo cáo");
        btnThoat = new JButton("Thoát");
        btnThem.setMaximumSize(btnBaoCao.getPreferredSize());
        btnXoa.setMaximumSize(btnBaoCao.getPreferredSize());
        btnThoat.setMaximumSize(btnBaoCao.getPreferredSize());
        Jeast.add(Box.createVerticalStrut(30));
        Jeast.add(btnThem);
        Jeast.add(Box.createVerticalStrut(10));
        Jeast.add(btnXoa);
        Jeast.add(Box.createVerticalStrut(10));
        Jeast.add(btnBaoCao);
        Jeast.add(Box.createVerticalStrut(10));
        Jeast.add(btnThoat);
        East1.add(Jeast);

        Jpan.add(East1, BorderLayout.EAST);

        add(Jpan);
        // Bắt sự kiện
        btnBaoCao.addActionListener(this);
        btnThem.addActionListener(this);
        btnThoat.addActionListener(this);
        btnXoa.addActionListener(this);
        txtLoaiPhi.addActionListener(this);
        txtTien.addActionListener(this);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new bai18().setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
        Object o = arg0.getSource();

        if (o.equals(btnThem) || o.equals(txtLoaiPhi) || o.equals(txtTien)) {
            if (Kiemtra() == true) {
                String lp = txtLoaiPhi.getText().trim();
                double tien = Double.parseDouble(txtTien.getText());

                ChiPhi cp = new ChiPhi(lp, tien);
                listModelName.addElement(cp);
                txtLoaiPhi.setText("");
                txtTien.setText("");
            }
        }
        if (o.equals(btnXoa)) {
            if (listName.getSelectedIndex() == -1) {
                JOptionPane.showConfirmDialog(this, "chon dong de !!!");
                return;
            }
            {
                JOptionPane.showConfirmDialog(this, "Muon tiep tuc hay khong",
                        "test", JOptionPane.YES_NO_OPTION);
                listModelName.removeElement(listName.getSelectedValue());
                //listModelName.removeAllElements();//xoa het
            }
        }

        if(o.equals(btnBaoCao))
        {
            BaoCao_Dialog a = new BaoCao_Dialog(this, listModelName);
            a.setVisible(true);
        }
        if(o.equals(btnThoat))
        {
            System.exit(0);
        }
    }

    private boolean Kiemtra() {
        if ((txtLoaiPhi.getText().equals("")) || (txtTien.getText().equals(""))) {
            JOptionPane.showConfirmDialog(this, "Nhap thieu!");
            return false;
        }
        try {
            double Tien = Double.parseDouble(txtTien.getText());
            if (Tien < 0) {
                JOptionPane.showConfirmDialog(this, "Nhap tien lon hon 0");
                txtTien.selectAll();
                txtTien.requestFocus();
                return false;
            }
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showConfirmDialog(this, "Loi kieu du lieu");
            return false;
        }
        return true;

    }

}


Baocao_Dialog.java

package thanhcs.bai18;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class BaoCao_Dialog extends Dialog  implements ActionListener, ListSelectionListener{

    JButton exit;
    DefaultListModel modellist;
    JList mList;
    JTextField txt;
    public BaoCao_Dialog(JFrame owner, DefaultListModel modellist) {
        super(owner);
        this.modellist = modellist;
        
        //
        setTitle("Bao Cao");
         setBackground(Color.WHITE);
         setLayout(new BorderLayout());
         setSize(250,300);
         setModal(true); // set la con cua jframe kia
         setLocationRelativeTo(null); // hien thi o giua
        //

         Panel panel = new Panel();
         panel.setLayout(new BorderLayout());
         panel.add(exit = new JButton("Close"));
         exit.addActionListener(this);
         add(exit, BorderLayout.SOUTH);
         
         JPanel panel2 = new JPanel();
         panel2.setLayout(new BorderLayout());
         panel2.add(txt = new JTextField(20), BorderLayout.NORTH);
         mList = new JList(modellist);
         panel2.add(new JScrollPane(mList) , BorderLayout.CENTER);
         add(panel2, BorderLayout.CENTER);
         
         
        mList.addListSelectionListener(this);
         
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==exit)
        {
            setVisible(false);
            //System.exit(0);
        }
        
        
        
    }
    
    @Override
    public void valueChanged(ListSelectionEvent e) {
        

        if(e.getSource()==mList)
        {
            if(mList.getSelectedIndex()!=-1)
            {
                ChiPhi c = (ChiPhi) mList.getSelectedValue();
                txt.setText("Loai Chi Phi : " + c.getLoaiPhi() + "|| So tien : "+ c.getTien());
            }
            else
            {
            }
        }
    }

    
}



No comments:

Powered by Blogger.