[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.
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: