表现层:展示数据、人机交互、收集参数调用逻辑层。
主界面:ListPanl
package cn.hncu.addr.ui;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;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 cn.hncu.addr.business.MyList;
import cn.hncu.addr.vo.AddressUser;public class ListPanl extends JPanel {private JFrame mainFram=null;private JList listAddrs = null;//注入private MyList myList = new MyList();/*** Create the panel.*/public ListPanl(JFrame mainFram) {this.mainFram = mainFram;initContentPane();initListAddrsData();}private void initListAddrsData() {listAddrs.setListData(myList.toArray());}public ListPanl(JFrame mainFram, List<AddressUser> resList) {this.mainFram = mainFram;initContentPane();listAddrs.setListData(resList.toArray());}public void initContentPane(){setMinimumSize(new Dimension(800, 600));setBackground(new Color(255, 255, 255));setLayout(null);JLabel label = new JLabel("我的地址App");label.setBounds(293, 25, 219, 47);label.setForeground(Color.RED);label.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 36));add(label);JButton btnToAddPanel = new JButton("添加...");btnToAddPanel.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {ListPanl.this.mainFram.setContentPane(new AddPanel(ListPanl.this.mainFram));ListPanl.this.mainFram.validate();}});btnToAddPanel.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnToAddPanel.setBounds(129, 378, 115, 54);add(btnToAddPanel);JButton btnToDeletePanel = new JButton("删除...");btnToDeletePanel.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//收集数据Object objAddressUser = listAddrs.getSelectedValue();if (objAddressUser==null) {JOptionPane.showMessageDialog(null, "请选中你要删除的一条记录");return;}AddressUser oldAddressUser = (AddressUser) objAddressUser;ListPanl.this.mainFram.setContentPane(new DeletePanel(ListPanl.this.mainFram,oldAddressUser));ListPanl.this.mainFram.validate();}});btnToDeletePanel.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnToDeletePanel.setBounds(270, 378, 115, 54);add(btnToDeletePanel);JButton btnToUpDatePanel = new JButton("修改...");btnToUpDatePanel.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//收集数据Object objAddressUser = listAddrs.getSelectedValue();if (objAddressUser==null) {JOptionPane.showMessageDialog(null, "请选中你要修改的一条记录");return;}AddressUser oldAddressUser = (AddressUser) objAddressUser;ListPanl.this.mainFram.setContentPane(new UpdatePanel(ListPanl.this.mainFram,oldAddressUser));ListPanl.this.mainFram.validate();}});btnToUpDatePanel.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnToUpDatePanel.setBounds(412, 378, 115, 54);add(btnToUpDatePanel);JButton btnToQueryPanel = new JButton("查询...");btnToQueryPanel.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {ListPanl.this.mainFram.setContentPane(new QueryPanel(ListPanl.this.mainFram));ListPanl.this.mainFram.validate();}});btnToQueryPanel.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnToQueryPanel.setBounds(542, 378, 115, 54);add(btnToQueryPanel);listAddrs = new JList();listAddrs.setBounds(209, 112, 378, 202);add(listAddrs);listAddrs.setFont(new Font("宋体", Font.BOLD, 16));listAddrs.setForeground(new Color(0, 0, 255));listAddrs.setBackground(new Color(255, 239, 213));}}
添加界面:AddPanel
package cn.hncu.addr.ui;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;import cn.hncu.addr.business.MyList;
import cn.hncu.addr.vo.AddressUser;public class AddPanel extends JPanel {private JTextField tfdName;private JTextField tfdAge;private JTextField tfdAddr;private JFrame mainFram=null;private MyList myList = new MyList();/*** Create the panel.*/public AddPanel(JFrame mainFram) {this.mainFram = mainFram;setMinimumSize(new Dimension(800, 600));setBackground(new Color(102, 204, 255));setLayout(null);JLabel label = new JLabel("添加地址");label.setForeground(new Color(204, 0, 51));label.setFont(new Font("微软雅黑", Font.BOLD, 36));label.setBounds(203, 10, 159, 67);add(label);JLabel label_1 = new JLabel("姓名:");label_1.setFont(new Font("宋体", Font.PLAIN, 26));label_1.setBounds(158, 103, 78, 39);add(label_1);tfdName = new JTextField();tfdName.setBounds(233, 103, 159, 39);add(tfdName);tfdName.setColumns(10);tfdAge = new JTextField();tfdAge.setColumns(10);tfdAge.setBounds(233, 164, 159, 44);add(tfdAge);JLabel label_2 = new JLabel("年龄:");label_2.setFont(new Font("宋体", Font.PLAIN, 26));label_2.setBounds(158, 164, 78, 44);add(label_2);tfdAddr = new JTextField();tfdAddr.setColumns(10);tfdAddr.setBounds(233, 236, 288, 39);add(tfdAddr);JLabel label_3 = new JLabel("地址:");label_3.setFont(new Font("宋体", Font.PLAIN, 26));label_3.setBounds(158, 236, 78, 39);add(label_3);JButton btnAdd = new JButton("添加");btnAdd.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//1 收集参数String name = tfdName.getText();if (name ==null||name.trim().length()==0) {JOptionPane.showMessageDialog(null, "名字不能为空!");return;}int age = 0;try {age = Integer.parseInt(tfdAge.getText().trim());} catch (NumberFormatException e1) {JOptionPane.showMessageDialog(null, "年龄只能为数字!");return;}String address = tfdAddr.getText();//2 组织参数AddressUser addressUser = new AddressUser();addressUser.setName(name);addressUser.setAge(age);addressUser.setAddress(address);//3 调用逻辑层boolean boo = myList.add(addressUser);//4 导向结果界面if (boo) {AddPanel.this.mainFram.setContentPane(new ListPanl(AddPanel.this.mainFram));AddPanel.this.mainFram.validate();}else{JOptionPane.showMessageDialog(null, "地址信息添加失败!");}}});btnAdd.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnAdd.setBounds(143, 326, 93, 44);add(btnAdd);JButton btnBack = new JButton("返回");btnBack.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {AddPanel.this.mainFram.setContentPane(new ListPanl(AddPanel.this.mainFram));AddPanel.this.mainFram.validate();}});btnBack.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnBack.setBounds(313, 326, 93, 44);add(btnBack);}
}
删除界面:DeletePanel
package cn.hncu.addr.ui;import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JFrame;import java.awt.Font;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;import cn.hncu.addr.business.MyList;
import cn.hncu.addr.vo.AddressUser;import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;public class DeletePanel extends JPanel {private JTextField tfdName;private JTextField tfdAge;private JTextField tfdAddress;private JFrame mainFrame = null;private AddressUser oldAddressUser = null;//注入private MyList myList = new MyList();/*** Create the panel.* @param oldAddressUser */public DeletePanel(JFrame mainFrame, AddressUser oldAddressUser) {this.mainFrame = mainFrame;this.oldAddressUser = oldAddressUser;setMinimumSize(new Dimension(800, 600));setBackground(new Color(255, 255, 255));setLayout(null);JLabel label = new JLabel("删除地址信息");label.setForeground(new Color(204, 0, 51));label.setFont(new Font("微软雅黑", Font.BOLD, 36));label.setBounds(267, 25, 242, 67);add(label);JLabel label_1 = new JLabel("姓名:");label_1.setFont(new Font("宋体", Font.PLAIN, 26));label_1.setBounds(237, 123, 78, 39);add(label_1);tfdName = new JTextField();tfdName.setEditable(false);tfdName.setColumns(10);tfdName.setBounds(312, 123, 159, 39);add(tfdName);JLabel label_2 = new JLabel("年龄:");label_2.setFont(new Font("宋体", Font.PLAIN, 26));label_2.setBounds(237, 184, 78, 44);add(label_2);tfdAge = new JTextField();tfdAge.setEditable(false);tfdAge.setColumns(10);tfdAge.setBounds(312, 184, 159, 44);add(tfdAge);JLabel label_3 = new JLabel("地址:");label_3.setFont(new Font("宋体", Font.PLAIN, 26));label_3.setBounds(237, 256, 78, 39);add(label_3);tfdAddress = new JTextField();tfdAddress.setEditable(false);tfdAddress.setColumns(10);tfdAddress.setBounds(312, 256, 288, 39);add(tfdAddress);JButton btnDelete = new JButton("删除");btnDelete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {boolean boo = myList.delete(DeletePanel.this.oldAddressUser);if (boo) {DeletePanel.this.mainFrame.setContentPane(new ListPanl(DeletePanel.this.mainFrame));DeletePanel.this.mainFrame.validate();}else{JOptionPane.showMessageDialog(null, "删除失败,该信息已被删除!");}}});btnDelete.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnDelete.setBounds(222, 346, 93, 44);add(btnDelete);JButton btnBack = new JButton("返回");btnBack.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {DeletePanel.this.mainFrame.setContentPane(new ListPanl(DeletePanel.this.mainFrame));DeletePanel.this.mainFrame.validate();}});btnBack.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnBack.setBounds(392, 346, 93, 44);add(btnBack);initDeletePanelData();}private void initDeletePanelData() {tfdName.setText(oldAddressUser.getName());tfdAge.setText(""+oldAddressUser.getAge());tfdAddress.setText(oldAddressUser.getAddress());}
}
修改界面:UpdatePanel
package cn.hncu.addr.ui;import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;import cn.hncu.addr.business.MyList;
import cn.hncu.addr.vo.AddressUser;public class UpdatePanel extends JPanel {private JFrame mainFrame=null;private AddressUser oldAddressUser = null;//注入private MyList myList = new MyList();private JTextField tfdName;private JTextField tfdAge;private JTextField tfdAddress;/*** Create the panel.*/public UpdatePanel(JFrame mainFrame, AddressUser oldAddressUser) {this.mainFrame = mainFrame;this.oldAddressUser = oldAddressUser;setLayout(null);tfdName = new JTextField();tfdName.setText((String) null);tfdName.setEditable(false);tfdName.setColumns(10);tfdName.setBounds(311, 137, 159, 39);add(tfdName);JLabel label = new JLabel("修改地址信息");label.setForeground(new Color(204, 0, 51));label.setFont(new Font("微软雅黑", Font.BOLD, 36));label.setBounds(255, 33, 257, 67);add(label);JLabel label_1 = new JLabel("姓名:");label_1.setFont(new Font("宋体", Font.PLAIN, 26));label_1.setBounds(236, 137, 78, 39);add(label_1);JLabel label_2 = new JLabel("年龄:");label_2.setFont(new Font("宋体", Font.PLAIN, 26));label_2.setBounds(236, 198, 78, 44);add(label_2);tfdAge = new JTextField();tfdAge.setText("0");tfdAge.setColumns(10);tfdAge.setBounds(311, 198, 159, 44);add(tfdAge);JLabel label_3 = new JLabel("地址:");label_3.setFont(new Font("宋体", Font.PLAIN, 26));label_3.setBounds(236, 270, 78, 39);add(label_3);tfdAddress = new JTextField();tfdAddress.setText((String) null);tfdAddress.setColumns(10);tfdAddress.setBounds(311, 270, 288, 39);add(tfdAddress);JButton btnUpdate = new JButton("修改");btnUpdate.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//1收集参数(姓名,年龄,地址)int age = 0;try {age = Integer.parseInt(tfdAge.getText().trim());} catch (NumberFormatException e1) {JOptionPane.showMessageDialog(null, "年龄只能为数字!");return;}String address = tfdAddress.getText();//2组织参数AddressUser addressUser = new AddressUser();addressUser.setName(UpdatePanel.this.oldAddressUser.getName());addressUser.setAge(age);addressUser.setAddress(address);//3调用逻辑层boolean boo = myList.update(addressUser);//4导向结果界面if (boo) {UpdatePanel.this.mainFrame.setContentPane(new ListPanl(UpdatePanel.this.mainFrame));UpdatePanel.this.mainFrame.validate();}else{JOptionPane.showMessageDialog(null, "地址信息修改失败!");}}});btnUpdate.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnUpdate.setBounds(221, 360, 93, 44);add(btnUpdate);JButton btnBack = new JButton("返回");btnBack.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {UpdatePanel.this.mainFrame.setContentPane(new ListPanl(UpdatePanel.this.mainFrame));UpdatePanel.this.mainFrame.validate();}});btnBack.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnBack.setBounds(391, 360, 93, 44);add(btnBack);initUpdatePanel();}private void initUpdatePanel() {tfdName.setText(oldAddressUser.getName());tfdAge.setText(""+oldAddressUser.getAge());tfdAddress.setText(oldAddressUser.getAddress());}}
查询界面:QueryPanel
package cn.hncu.addr.ui;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;import cn.hncu.addr.business.MyList;
import cn.hncu.addr.vo.AddressQueryVO;
import cn.hncu.addr.vo.AddressUser;public class QueryPanel extends JPanel {private JFrame mainFram=null;private MyList myList = new MyList();private JTextField tfdName;private JTextField tfdAddress;private JTextField tfdMinAge;private JTextField tfdMaxAge;/*** Create the panel.*/public QueryPanel(JFrame mainFram) {setMinimumSize(new Dimension(800, 600));this.mainFram = mainFram;setLayout(null);JLabel label = new JLabel("查询地址信息");label.setForeground(new Color(204, 0, 51));label.setFont(new Font("微软雅黑", Font.BOLD, 36));label.setBounds(255, 31, 248, 67);add(label);tfdName = new JTextField();tfdName.setColumns(10);tfdName.setBounds(164, 137, 159, 39);add(tfdName);JLabel label_1 = new JLabel("姓名:");label_1.setFont(new Font("宋体", Font.PLAIN, 26));label_1.setBounds(89, 137, 78, 39);add(label_1);tfdAddress = new JTextField();tfdAddress.setColumns(10);tfdAddress.setBounds(423, 137, 288, 39);add(tfdAddress);JLabel label_2 = new JLabel("地址:");label_2.setFont(new Font("宋体", Font.PLAIN, 26));label_2.setBounds(348, 137, 78, 39);add(label_2);tfdMinAge = new JTextField();tfdMinAge.setColumns(10);tfdMinAge.setBounds(216, 249, 159, 44);add(tfdMinAge);JLabel label_3 = new JLabel("最小年龄:");label_3.setFont(new Font("宋体", Font.PLAIN, 26));label_3.setBounds(89, 249, 153, 44);add(label_3);JLabel label_4 = new JLabel("最大年龄:");label_4.setFont(new Font("宋体", Font.PLAIN, 26));label_4.setBounds(396, 249, 153, 44);add(label_4);tfdMaxAge = new JTextField();tfdMaxAge.setColumns(10);tfdMaxAge.setBounds(523, 249, 159, 44);add(tfdMaxAge);JButton btnBack = new JButton("返回");btnBack.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {QueryPanel.this.mainFram.setContentPane(new ListPanl(QueryPanel.this.mainFram));QueryPanel.this.mainFram.validate();}});btnBack.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnBack.setBounds(396, 361, 93, 44);add(btnBack);JButton btnQuery = new JButton("查询");btnQuery.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//1收集参数String queryName = tfdName.getText().trim();String queryAddress = tfdAddress.getText().trim();String queryMinAge = tfdMinAge.getText().trim();String queryMaxAge = tfdMaxAge.getText().trim();//2组织参数AddressQueryVO queryVO = new AddressQueryVO();queryVO.setAddress(queryAddress);queryVO.setName(queryName);int minAge = 0;if (!"".equals(queryMinAge)) {try {minAge = Integer.parseInt(queryMinAge);} catch (NumberFormatException e1) {JOptionPane.showMessageDialog(null, "年龄只能为数字!");return;}}int maxAge = 0;if (!"".equals(queryMaxAge)) {try {maxAge = Integer.parseInt(queryMaxAge);} catch (NumberFormatException e1) {JOptionPane.showMessageDialog(null, "年龄只能为数字!");return;}}queryVO.setAge(minAge);queryVO.setAge2(maxAge);//3调用逻辑层List<AddressUser> resList = myList.query(queryVO);//4导向结果界面QueryPanel.this.mainFram.setContentPane(new ListPanl(QueryPanel.this.mainFram,resList));QueryPanel.this.mainFram.validate();}});btnQuery.setFont(new Font("微软雅黑", Font.PLAIN, 24));btnQuery.setBounds(226, 361, 93, 44);add(btnQuery);}
}