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.
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:
Post a Comment