项目场景:
弹窗编辑后事件,输入当前字段时控制另一个字段是否可用
当前示例的弹窗模板页签在表头
主要代码:
/**
* 编辑后事件
*/
@Override
public void afterEdit(BillEditEvent arg0) {
//获取当前操作的字段
String getkey=arg0.getKey();
//选择生成方式
if ("scfs".equals(arg0.getKey())||"scfs".equals(arg0.getKey())) {
try {
Object scfsobj = getPanel().getHeadItem("scfs").getValueObject();
String scfs=String.valueOf(scfsobj);
if ("".equals(scfs)||"null".equals(scfs)) {
return;
}
//选择序列化生成方式,拆分数量输入框设置禁用
else if (scfs.equals("序列化拆分")) {
getPanel().getHeadItem("aslcf").setEnabled(false);
getPanel().getHeadItem("aslcf").setFillEnabled(false);
}
} catch (Exception e1) {
ExceptionUtils.wrappBusinessException("生成方式后事件问题");
}
}
}
弹窗全代码示例
package nc.ui.pu.m23.action;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.itf.pu.m23.arriveitf.IArriveService;
import nc.itf.uap.IVOPersistence;
import nc.ui.pub.ClientEnvironment;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.beans.UIButton;
import nc.ui.pub.beans.UIDialog;
import nc.ui.pub.beans.UIPanel;
import nc.ui.pub.beans.UIRefPane;
import nc.ui.pub.bill.BillCardBeforeEditListener;
import nc.ui.pub.bill.BillCardPanel;
import nc.ui.pub.bill.BillEditEvent;
import nc.ui.pub.bill.BillEditListener;
import nc.ui.pub.bill.BillEditListener2;
import nc.ui.pub.bill.BillItem;
import nc.ui.pub.bill.BillItemEvent;
import nc.ui.pubapp.uif2app.view.BillForm;
import nc.vo.pu.m23.check.CheckEditBodyDlgVO;
import nc.vo.pu.m23.check.UFDateAddDateTool;
import nc.vo.pu.m23.entity.ArriveItemVO;
import nc.vo.pu.m23.entity.ArriveVO;
import nc.vo.pu.m23.entity.ArriveViewVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pub.VOStatus;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
public class SplitArriveDlg extends UIDialog implements ActionListener,
BillEditListener, BillEditListener2, BillCardBeforeEditListener {
private BillCardPanel panel = null;// 卡片布局
private UIButton button_cancel = null;// 取消按钮
private UIButton button_save = null;// 确定按钮
private UIButton button_delete = null;// 删除按钮
private UIPanel m_mainPanel = null;// 界面总装
private UIPanel buttonpanel = null;// 按钮组
private BillForm editor = null;
private ArriveVO arriveVO=null;
private ArriveItemVO arriveItemVO=null;
private HashMap<String, String> dataMap=null;
public ArriveVO getArriveVO() {
return arriveVO;
}
public void setArriveVO(ArriveVO arriveVO) {
this.arriveVO = arriveVO;
}
public ArriveItemVO getArriveItemVO() {
return arriveItemVO;
}
public void setArriveItemVO(ArriveItemVO arriveItemVO) {
this.arriveItemVO = arriveItemVO;
}
public HashMap<String, String> getDataMap() {
return dataMap;
}
public void setDataMap(HashMap<String, String> dataMap) {
this.dataMap = dataMap;
}
public HashMap<String, String> getDateMap() {
return dataMap;
}
public void setDateMap(HashMap<String, String> dataMap) {
this.dataMap = dataMap;
}
/**
* 加载模板时初始化
*/
public SplitArriveDlg() {
this.panel = getPanel();
this.buttonpanel = getButtonpanel();
this.setTitle("拆分合格证");
this.setSize(new java.awt.Dimension(400, 300));
initialize();
addListenerEvent();
}
/**
* 加载模板时初始化
* @param dateMap
*/
public SplitArriveDlg(HashMap<String, String> dateMap) {
// 初始化弹窗数据信息
setDateMap(dateMap);
// initialize();
this.panel = getPanel();
this.buttonpanel = getButtonpanel();
this.setTitle("拆分合格证");
this.setSize(new java.awt.Dimension(400, 300));
initialize();
addListenerEvent();
}
/**
* 设置监听
*/
private void addListenerEvent() {
// 设置可编辑,设置字段可编辑
this.getM_mainPanel().setEnabled(true);// 面板可编辑
this.getPanel().setEnabled(true);// 设置面板可编辑
// 将某个字段设置成可编辑
// this.getPanel().getBodyItem("").setEdit(true);
// 将按钮和面板加入监听
this.getPanel().addEditListener(this);
this.getButton_cancel().addActionListener(this);
// this.getButton_delete().addActionListener(this);
this.getButton_save().addActionListener(this);
this.getPanel().addBillEditListenerHeadTail(this);
this.getPanel().addEditListener(this);
this.getPanel().addBodyEditListener2(this);
}
private void initialize() {
setName("UIDialog");
setDefaultCloseOperation(2);
setSize(400, 300);
setModal(true);
setContentPane(getM_mainPanel());
initConnections();
setResizable(false);
setUIDialogUndecorationStyle(this);
}
/**
* 模板设置
*
* @return
*/
public BillCardPanel getPanel() {
if (panel == null) {
panel = new BillCardPanel();
panel.setPreferredSize(new java.awt.Dimension(400, 300));
panel.setName("bodypanel");
// 给模板指定 单据模板类型,初始化时载入对应模板弹窗 模板编码 单据模板类型
panel.loadTemplet("dhdcfdlg01", null, ClientEnvironment
.getInstance().getUser().getPrimaryKey(), ClientEnvironment
.getInstance().getGroupId());
// panel.loadTemplet("40040802",null,ClientEnvironment.getInstance().getUser().getPrimaryKey(),ClientEnvironment.getInstance().getGroupId());
panel.setBodyMultiSelect(true);
panel.getBillCardBeforeEditListener();
HashMap<String, String> dataMap=getDateMap();
// if (getDateMap()!=null) {
panel.getHeadItem("sm").setValue(getDateMap().get("sm"));
// }
}
return panel;
}
/**
* 设置模板
*
* @return
*/
public UIPanel getM_mainPanel() {
if (m_mainPanel == null) {
m_mainPanel = new UIPanel();
m_mainPanel.setPreferredSize(new java.awt.Dimension(400, 300));
m_mainPanel.setName("mainPanel");
m_mainPanel.setLayout(new BorderLayout());
m_mainPanel.add(getPanel(), BorderLayout.CENTER);
m_mainPanel.add(getButtonpanel(), BorderLayout.SOUTH);
}
return m_mainPanel;
}
public void setPanel(BillCardPanel panel) {
this.panel = panel;
}
public UIButton getButton_cancel() {
if (button_cancel == null) {
button_cancel = new UIButton();
button_cancel.setName("button_cancel");
button_cancel.setText("取消");
}
return button_cancel;
}
public void setButton_cancel(UIButton button_cancel) {
this.button_cancel = button_cancel;
}
public UIButton getButton_save() {
if (button_save == null) {
button_save = new UIButton();
button_save.setName("button_save");
button_save.setText("保存");
}
return button_save;
}
public void setButton_save(UIButton button_save) {
this.button_save = button_save;
}
public UIButton getButton_delete() {
if (button_delete == null) {
button_delete = new UIButton();
button_delete.setName("button_delete");
button_delete.setText("关闭");
}
return button_delete;
}
public void setButton_delete(UIButton button_delete) {
this.button_delete = button_delete;
}
public void setM_mainPanel(UIPanel m_mainPanel) {
this.m_mainPanel = m_mainPanel;
}
/**
* 设置模板的按钮组
*
* @return
*/
public UIPanel getButtonpanel() {
if (buttonpanel == null) {
buttonpanel = new UIPanel();
buttonpanel.setName("buttonpanel");
buttonpanel.add(getButton_save(), getButton_save().getName());
buttonpanel.add(getButton_cancel(), getButton_cancel().getName());
// buttonpanel.add(getButton_delete(), getButton_delete().getName());
}
return buttonpanel;
}
public void setButtonpanel(UIPanel buttonpanel) {
this.buttonpanel = buttonpanel;
}
public BillForm getEditor() {
return editor;
}
public void setEditor(BillForm editor) {
this.editor = editor;
}
private void initConnections() {
addWindowListener(this);
addKeyListener(this);
}
/**
* 编辑后事件
*/
@Override
public void afterEdit(BillEditEvent arg0) {
//获取当前操作的字段
String getkey=arg0.getKey();
//选择生成方式
if ("scfs".equals(arg0.getKey())||"scfs".equals(arg0.getKey())) {
try {
Object scfsobj = getPanel().getHeadItem("scfs").getValueObject();
String scfs=String.valueOf(scfsobj);
if ("".equals(scfs)||"null".equals(scfs)) {
return;
}
//选择序列化生成方式,拆分数量输入框设置禁用
else if (scfs.equals("序列化拆分")) {
getPanel().getHeadItem("aslcf").setEnabled(false);
getPanel().getHeadItem("aslcf").setFillEnabled(false);
}
} catch (Exception e1) {
ExceptionUtils.wrappBusinessException("生成方式后事件问题");
}
}
}
@Override
public void bodyRowChange(BillEditEvent arg0) {
// TODO Auto-generated method stub
}
/**
* 弹窗按钮动作执行方法
*/
@Override
public void actionPerformed(ActionEvent e) {
// 判断当前执行的按钮
// 点击取消按钮
if (e.getSource() == getButton_cancel()) {
this.close();
return;
}
// 点击删除按钮
else if (e.getSource() == getButton_delete()) {
this.close();
return;
}
// 点击保存按钮
else if (e.getSource() == getButton_save()) {
//获取弹窗模板数据信息、按数量拆分和拆分方式
String scfsobj = getPanel().getHeadItem("scfs").getValueObject()==null?null:getPanel().getHeadItem("scfs").getValueObject().toString();
String aslcfobj = getPanel().getHeadItem("aslcf").getValueObject()==null?null:getPanel().getHeadItem("aslcf").getValueObject().toString();
//到货单拆分业务处理接口
IArriveService arrService=NCLocator.getInstance().lookup(IArriveService.class);
//原表体VO
ArriveItemVO itemvo=this.getArriveItemVO();
//原表体数量
Integer bodynum=Integer.valueOf(itemvo.getNnum().toString());
//校验选中的拆分方式
//序列化拆分
if (scfsobj!=null && scfsobj.equals("序列化拆分")) {
try {
//调业务接口进行拆分、scfs 0 序列化拆分、表体VO、null
HashMap<String,String> redata = arrService.splitArriveOrderService(0,itemvo,null);
// if(redata!=null){
MessageDialog.showHintDlg(null,"提示信息","到货单序列化拆分成功");
// }
} catch (Exception e1) {
MessageDialog.showErrorDlg(null,"提示信息","序列化拆分时异常:"+e1.getMessage());
return ;
}
}
//按数量拆分
else if(scfsobj!=null && scfsobj.equals("按数量拆分")){
//校验输入规则是否正确
if (aslcfobj==null || !aslcfobj.contains(";")) {
MessageDialog.showErrorDlg(null,"提示信息","请按正确的规则输入要拆分的数量,用英文分号“;”区分多个");
return ;
}
//将输入的拆分数量转化为数组,按分号;拆分
String[] aslcfs = aslcfobj.split(";");
ArrayList<Integer> sllist=new ArrayList<Integer>();
//计算拆分数量数否满足原表体行数量
Integer sum=0;
for (int i = 0; i < aslcfs.length; i++) {
Integer sl=Integer.valueOf(aslcfs[i]);
sum=sum+sl;
sllist.add(sl);
}
if (sum.compareTo(bodynum)!=0) {
MessageDialog.showErrorDlg(null,"提示信息","输入的拆分数量超出或不满足原到货数量,请修改数量后重新保存");
return ;
}
try {
//调业务接口进行拆分、scfs 1 按数量拆分、表体VO、aslcfs拆分数量数组
HashMap<String,String> redata = arrService.splitArriveOrderService(1,itemvo,sllist);
MessageDialog.showHintDlg(null,"提示信息","到货单按数量拆分成功");
} catch (Exception e1) {
MessageDialog.showErrorDlg(null,"提示信息","按数量拆分时异常:"+e1.getMessage());
// ExceptionUtils.wrappBusinessException("保存拆分信息失败");
return ;
}
}else{
MessageDialog.showErrorDlg(null,"提示信息","请选择到货单拆分方式后再进行保存操作");
// ExceptionUtils.wrappBusinessException("保存拆分信息失败");
return ;
}
this.close();
return;
}
}
/**
* 获取当前卡片态的值
*
* @return
*/
private CheckEditBodyDlgVO getSelectVO() {
// 获取所有的表头卡片 的字段项,模板字段
BillItem[] headItems = this.getPanel().getHeadItems();
CheckEditBodyDlgVO reDlgvo = new CheckEditBodyDlgVO();
for (int i = 0; i < headItems.length; i++) {
Object key = headItems[i].getKey();
Object valueObject = headItems[i].getValueObject();
reDlgvo.setAttributeValue(key.toString(), valueObject);
String i1 = "";
}
// 根据项目主键获取对应的value,card模板表头取值
// Object valueObject =
// this.getPanel().getHeadItem("pk_supplier").getValueObject();
// CheckEditBodyDlgVO selVO=this.getPanel().getHeadItem();
return reDlgvo;
}
@Override
public boolean beforeEdit(BillItemEvent paramBillItemEvent) {
return true;
}
@Override
public boolean beforeEdit(BillEditEvent paramBillEditEvent) {
return true;
}
}