📄 vipaddpanel.java
字号:
/**
*
*/
package view.panel.vip;
import java.awt.BorderLayout;
import java.awt.GridBagLayout;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import view.common.CheckInputUtil;
import view.common.DataPicker;
import view.common.GBC;
import vo.VipCardVo;
import vo.VipVo;
import control.vip.VipAddPanelListener;
import dao.vip.VipDao;
import dao.vip.impl.VipDaoImpl;
/**
* @author lulicheng
* @version 1.0
*/
public class VipAddPanel extends JPanel {
// =====添加面板的两个子面板=====
JPanel infoPanel, buttonPanel;
// ----定义infoPanel中的组件-----
// (文本标签)客户编号,客户姓名, 客户性别, 客户生日, 客户电话, 客户密码,确认密码
JLabel consumerId, consumerName, consumerSex, consumerBirthday, consumerPhone, consumerPassword,
ensurePassword;
// (文本标签)会员级别, 会员折扣, 会员卡积分,会员卡状态, 注册日期,地址,提示信息
JLabel consumerGrade, consumerDiscount, cardMark, cardStatu, registerDate, address/*, infoTips*/;
// (文本输入框)编号,姓名,生日, 电话,密码,确认密码
JTextField idField, nameField, birthdayField, phoneField, addressField/*, infoTipField*/;
JPasswordField passwordField, ensurePswFiled;
// (文本输入框)折扣,积分,注册日期
JTextField discountField, markField, dateField;
// (组合框)性别,级别,状态
JComboBox sexCombo, gradeCombo, statuCombo;
// -----定义buttonPanel中的组件-----
JButton buttonOk, buttonCancel;
// 需要与外部进行数据交互添加的属性
VipManagePanel vipManagePanel;
JDialog dialog;
DataPicker picker = new DataPicker();
JComboBox birthdayCmbBox;
/**
* 构造方法,设置面板的属性和添加的组件
*/
public VipAddPanel(JDialog dialog) {
this.setSize(470, 360);
this.setLayout(new BorderLayout());
initComponent();
this.add(buildInfoPanel());
this.add(buildButtonPanel(dialog), BorderLayout.SOUTH);
}
/**
* 构造方法,设置面板的属性和添加的组件
*/
public VipAddPanel(VipManagePanel vipManagePanel, JDialog dialog) {
/*this.dialog = dialog;*/
this.vipManagePanel = vipManagePanel;
this.setLayout(new BorderLayout());
initComponent();
this.add(buildInfoPanel());
this.add(buildButtonPanel(dialog), BorderLayout.SOUTH);
}
public JDialog getDialog(){
return dialog;
}
/**
* 构造按钮面板(buttonPanel),并且设置布局
*
* @return JPanel
*/
public JPanel buildButtonPanel(JDialog dialog) {
if (buttonPanel == null) {
buttonPanel = new JPanel();
buttonPanel.add(buildBtnOk());
buttonPanel.add(buildBtnCancel(dialog));
}
return buttonPanel;
}
public JButton buildBtnOk() {
if (buttonOk == null) {
buttonOk = new JButton("确定");
buttonOk.setToolTipText("请先确认:日期格式为‘yyyy-MM-dd’,会员积分为整数");
buttonOk.addActionListener(new VipAddPanelListener(this, vipManagePanel));
}
return buttonOk;
}
public JButton buildBtnCancel(JDialog dialog) {
if (buttonCancel == null) {
buttonCancel = new JButton("取消");
buttonCancel.addActionListener(new VipAddPanelListener(dialog));
}
return buttonCancel;
}
public JComboBox buildBithdayCmbBox() {
if (birthdayCmbBox == null) {
birthdayCmbBox = picker.getDataPacker();
}
return birthdayCmbBox;
}
/**
* 将已经初始化的标签,文本输入框,文本域添加到信息面板,并且设置布局
*
* @return JPanel
*/
public JPanel buildInfoPanel() {
if (infoPanel == null) {
infoPanel = new JPanel();
// infoPanel.setBackground(Color.RED);
infoPanel.setBorder(BorderFactory.createTitledBorder("会员信息"));
infoPanel.setLayout(new GridBagLayout());
infoPanel.add(consumerId, new GBC(0, 0).setInset(15, 20, 15, 20).setFill(GBC.WEST));
infoPanel.add(idField, new GBC(1, 0).setInset(15, 20, 15, 20).setWeight(5, 0).setFill(
GBC.HORIZONTAL));
iniVipId();
infoPanel.add(consumerName, new GBC(2, 0).setInset(15, 20,15, 20).setFill(GBC.WEST));
infoPanel.add(nameField, new GBC(3, 0).setInset(15, 20, 15, 20).setWeight(5, 0).setFill(
GBC.HORIZONTAL));
infoPanel.add(consumerSex, new GBC(0, 1).setInset(15, 20, 15, 20).setFill(GBC.WEST));
infoPanel.add(sexCombo, new GBC(1, 1).setInset(15, 20, 15, 20).setWeight(5, 0).setFill(
GBC.HORIZONTAL));
infoPanel.add(consumerBirthday, new GBC(2, 1).setInset(15, 20, 15, 20).setFill(GBC.WEST));
infoPanel.add(this.buildBithdayCmbBox(), new GBC(3, 1).setInset(15, 20, 15, 20).setWeight(5, 0).setFill(
GBC.HORIZONTAL));
infoPanel.add(consumerPhone, new GBC(0, 2).setInset(15, 20, 15, 20).setFill(GBC.WEST));
infoPanel.add(phoneField, new GBC(1, 2).setInset(15, 20, 15, 20).setWeight(5, 0).setFill(
GBC.HORIZONTAL));
infoPanel.add(registerDate, new GBC(2, 2).
setInset(15, 20, 15, 20).setFill(GBC.WEST));
infoPanel.add(dateField, new GBC(3, 2).
setInset(15, 20, 15, 20).setWeight(5, 0).setFill(GBC.HORIZONTAL));
infoPanel.add(consumerPassword, new GBC(0, 3).setInset(15, 20, 15, 20).setFill(GBC.WEST));
infoPanel.add(passwordField, new GBC(1, 3).setInset(15, 20, 15, 20).setWeight(5, 0).setFill(
GBC.HORIZONTAL));
infoPanel.add(ensurePassword, new GBC(2, 3).setInset(15, 20, 15, 20).setFill(GBC.WEST));
infoPanel.add(ensurePswFiled, new GBC(3, 3).setInset(15, 20, 15, 20).setWeight(5, 0).setFill(
GBC.HORIZONTAL));
infoPanel.add(address, new GBC(0, 4).setInset(15, 20, 15, 20).setFill(GBC.WEST));
infoPanel.add(addressField, new GBC(1, 4, 3, 2).setFill(GBC.HORIZONTAL));
}
return infoPanel;
}
/*
* 初始化无需添加事件处理的组件,包括文本标签,文本输入框
*/
public void initComponent() {
initJLabel();
initJTextFeild();
initJPasswordField();
initJComboBox();
}
/**
* 初始化组合框,列表选项赋值
*/
public void initJComboBox() {
String[] sex = { "男", "女" };
sexCombo = new JComboBox(sex);
String[] grade = { "普通", "中级", "高级" };
gradeCombo = new JComboBox(grade);
String[] statu = { "正常", "暂停", "停用" };
statuCombo = new JComboBox(statu);
}
/*
* JComboBox sexCombo, gradeCombo, statuCombo;
*/
/**
* 初始化文本框,并且给予大小
*/
public void initJTextFeild() {
idField = new JTextField(10);
nameField = new JTextField(10);
birthdayField = new JTextField(10);
phoneField = new JTextField(10);
discountField = new JTextField(10);
markField = new JTextField(10);
dateField = new JTextField(10);
// 设置注册日期输入框的文本为当前的系统日期,并且不可以编辑
SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd");
dateField.setText(String.valueOf(sdf.format(new Date()).subSequence(0, 10)));
dateField.setEditable(false);
dateField.setHorizontalAlignment(JTextField.CENTER);
addressField = new JTextField(10);
}
public void initJPasswordField() {
passwordField = new JPasswordField(10);
ensurePswFiled = new JPasswordField(10);
}
/**
* 初始化面板中标签属性
*/
public void initJLabel() {
consumerId = new JLabel("会员编号");
consumerName = new JLabel("会员姓名");
consumerSex = new JLabel("会员性别");
consumerBirthday = new JLabel("会员生日");
consumerPhone = new JLabel("会员电话");
consumerPassword = new JLabel("会员密码");
ensurePassword = new JLabel("密码确认");
consumerGrade = new JLabel("会员级别");
consumerDiscount = new JLabel("会员折扣");
cardMark = new JLabel("会员卡积分");
cardStatu = new JLabel("会员卡状态");
registerDate = new JLabel("注册日期");
address = new JLabel("会员住址:");
}
/**
* 获得界面输入的值,以VipVo对象的形式传递给调用者
*
* @return VipVo
*/
public VipVo getInputTxtValue() {
int id = Integer.parseInt(idField.getText().trim());
int cardId = new VipDaoImpl().getNewCardId();
String psw = String.valueOf(passwordField.getPassword());
String regDate = dateField.getText().trim();
String level = "普通";
double restMoney = 0.0;
int point = 0;
String state = "正常";
String name = nameField.getText();
String sex = sexCombo.getSelectedItem().toString();
String birthday = this.birthdayCmbBox.getSelectedItem().toString();
String phone = phoneField.getText();
String address = addressField.getText();
return new VipVo(new VipCardVo(id, cardId, psw, regDate, level, restMoney, point, state), name, sex,
birthday, phone, address);
}
public void clearContent(){
iniVipId();
nameField.setText("");
phoneField.setText("");
passwordField.setText("");
ensurePswFiled.setText("");
addressField.setText("");
}
/**
* 检查该面板输入的信息是否符合条件,包括编号不含字符,必备条件非空,密码和密码确认匹配
*
* @return
*/
public boolean checkInput() {
if (nameField.getText().toString().equals("")) {
JOptionPane.showMessageDialog(null, "您未输入会员姓名", "提示信息", JOptionPane.YES_OPTION);
nameField.requestFocus();
return false;
}
if (CheckInputUtil.checkInputIsNull(String.valueOf(passwordField.getPassword()))) {
JOptionPane.showMessageDialog(null, "请输入密码(小于16位)", "提示信息", JOptionPane.YES_OPTION);
passwordField.requestFocus();
return false;
}
if (CheckInputUtil.checkInputIsNull(String.valueOf(ensurePswFiled.getPassword()))) {
JOptionPane.showMessageDialog(null, "请输入密码校验(小于16位)", "提示信息", JOptionPane.YES_OPTION);
ensurePswFiled.requestFocus();
return false;
}
if (!String.valueOf(ensurePswFiled.getPassword()).equals(
String.valueOf(passwordField.getPassword()))) {
JOptionPane.showMessageDialog(null, "请确定输入的密码和密码确认一致", "提示信息", JOptionPane.YES_OPTION);
ensurePswFiled.setText("");
passwordField.setText("");
passwordField.requestFocus();
return false;
}
return true;
}
public void iniVipId(){
VipDao vipDao = new VipDaoImpl();
int vipId = vipDao.getNewVipId();
this.idField.setText(new Integer(vipId).toString());
this.idField.setEditable(false);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -