常用方法.docx
《常用方法.docx》由会员分享,可在线阅读,更多相关《常用方法.docx(16页珍藏版)》请在冰点文库上搜索。
![常用方法.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/932f4c97-0ade-415f-a04f-2ae92e1ad9e5/932f4c97-0ade-415f-a04f-2ae92e1ad9e51.gif)
常用方法
设置界面域值
voidWsTxMgr.setTxScreenFieldValue(Stringfield_name,intindex,Stringfield_value)
voidWsTxMgr.setTxScreenFieldValue(ProcessPanelpanel,Stringfield_name,intindex,Stringfield_value)
取界面域值
StringWsTxMgr.getTxScreenFieldValue(Stringfield_name,intindex)
设置界面域控制
voidWsTxMgr.setTxScreenFieldControl(Stringfield_name,intcontrol)
voidWsTxMgr.setTxScreenFieldControl(ProcessPanelpanel,Stringfield_name,intcontrol)
注:
controlUIBaseField.MUST_INPUT----必须输入
UIBaseField.NO_CONTROL----无控制
UIBaseField.NO_FOCUS----无焦点
UIBaseField.FORBID_INPUT----禁止输入
设置界面域焦点2033301090010000002621100053674
voidWsTxMgr.setCursor(Stringfield_name,intindex)
焦点移到下一个域
voidWsTxMgr.gotoNextInputField(Stringfield_name,intindex)
设置当前焦点域不允许自动离开
voidWsTxMgr.getFocusField().setAllowLeave(false)
例如:
WsTxMgr.getFocusField().setAllowLeave(false);
弹出消息对话框
WsTxMgr.showMessageDialog(Stringmessage,inttype)
例如:
WsTxMgr.showMessageDialog("请先选择凭证种类!
",0);
WsTxMgr.showMessageDialog(Stringtitle,Stringmessage,inttype)
弹出输入对话框
WsTxMgr.showInputDialog(Stringtitle,Stringpanel_name)
WsTxMgr.showInputDialog(Stringtitle,Stringpanel_name,FieldBufferpanel_value)
例如:
WsTxMgr.showInputDialog("汇划系统内","st.int_03001f0",reqfb);
弹出输出对话框
WsTxMgr.showOutputDialog(Stringtitle,Stringpanel_name)
WsTxMgr.showOutputDialog(Stringtitle,Stringpanel_name,FieldBufferpanel_value)
在平台上显示界面
WsTxMgr.displayTxScreen(Stringpanel_name)
取基本数据
FieldBufferWsTxMgr.getTxBaseFields()//取当前交易环境中的交易公共数据
取上传主机FieldBuffer
FieldBufferWsTxMgr.getTxRequestFields()
例如:
FieldBufferreqfb=WsTxMgr.getTxRequestFields();
取主机返回FieldBuffer
FieldBufferWsTxMgr.getTxResultFields()
取所有FieldBuffer
FieldBufferWsTxMgr.getTxFields()//取当前交易环境中的交易数据
FieldBufferreqFb=WsTxMgr.getTxFields();
Stringchk_name=getTellerName(reqFb.getStringValue("_chk_no",0));
fb.put("chk_name",0,chk_name);
取得pbsRun根目录
StringSystem.getProperty("pbsdir","")
取得下传文件存放的相对路径
StringWsTxMgr.getWsTxConfig("ftp.dir.native")
--------------------------------------------------------------------------------------------------------------------------------
提交主机交易
TransactionResultresult=WsTxMgr.callHostTransaction(Stringhost_tx_code,FieldBuffersend_fieldbuffer);
if(!
result.isTxSuccess()){
WsTxMgr.showMessageDialog("提交主机交易失败!
\n"+result.getErrMessage(),1);
return;
}
FieldBufferresult_fb=result.getResultFields();
--------------------------------------------------------------------------------------------------------------------------------
文件记录格式
从RECORD中读取
IDE定制中重复的文件记录格式读出结果从1位置开始,不重复的文件记录格式只读入0位置
TxTransactionResultresult=WsTxMgr.readDataFromRecord(Stringfile_record,FieldBufferresult_fb,intrecord_id);
if(!
result.isTxSuccess()){
StringerrMsg=result.getErrMessage();
if(errMsg.startsWith("NOT_EXIST"))
WsTxMgr.showMessageDialog("无数据",1);
else
WsTxMgr.showMessageDialog("读RECORD"+record_id+"出错:
\n"+result.getErrMessage(),1);
return;
}
从文件中读取
TxTransactionResultresult=WsTxMgr.readDataFromFile(Stringfile_record,FieldBufferresult_fb,Stringfile_name);
if(!
result.isTxSuccess()){
StringerrMsg=result.getErrMessage();
if(errMsg.startsWith("NOT_EXIST"))
WsTxMgr.showMessageDialog("无数据",1);
else
WsTxMgr.showMessageDialog("读RECORD"+record_id+"出错:
\n"+result.getErrMessage(),1);
return;
}
写入RECORD
写入时行前加入标志位_dup_rec_oper_flag
TxTransactionResultresult=WsTxMgr.writeDataToRecord("_dup_rec_oper_flag",Stringfile_record,FieldBufferwrite_fb,intrecord_id,false);
不加标志位
TxTransactionResultresult=WsTxMgr.writeDataToRecord(Stringfile_record,FieldBufferwrite_fb,intrecord_id,false);
if(!
result.isTxSuccess()){
WsTxMgr.showMessageDialog("写RECORD"+record_id+"出错:
\n"+result.getErrMessage(),1);
return;
}
--------------------------------------------------------------------------------------------------------------------------------
PbsTableBean、PbsTablePane
PbsTableBean与PbsTablePane配对,使用前需要手动通过语句
pbsTableBean1.giveTable(pbsTablePane1.getJTable());
将PbsTableBean与PbsTablePane关联方能正确显示
设置默认鼠标双击事件,默认为显示修改界面
pbsTableBean1.setDefaultDbClikFunction(intdefault);
注:
defaultPbsTableBean.INSERT----添加
PbsTableBean.MODIFY----修改
PbsTableBean.DETAIL----详细
在弹出面板中取得父面板中PbsTableBean句柄
PbsTableBeanptb=(PbsTableBean)WsTxMgr.getUiManager().getPbsTableBeanFromPanel(ProcessPanelpanel);
取得PbsTableBean当前操作
intoper=pbsTableBean1.getCurrentOperation();
注:
operPbsTableBean.INSERT----添加
PbsTableBean.MODIFY----修改
PbsTableBean.DELETE----删除
PbsTableBean.DETAIL----详细
取得缓冲数据,需要在PbsTableBean定制中选择使用缓冲
FieldBufferfb=pbsTableBean1.getBufferedFieldBuffer();
清除缓冲
pbsTableBean1.clearBufferedFieldBuffer();
设置表格中显示的值
pbsTableBean1.setValue(FieldBuffervalue);
PbsTableBean中用到的数据字典:
序号_rec_no_in_file,操作标志_dup_rec_oper_flag
//int.92015_1.java
//modify20031130
//写RECORD时会将相应数据写入TxRequestFields,为防止pbsTableBean1.getBufferedFieldBuffer()的数据覆盖pbsTableBean1.getValue()中的
//数据,故不再执行pbsTableBean1.getValue().overCopy(WsTxMgr.getTxRequestFields()),此时未修改过的记录在非记账状态下将不再显示
WsTxMgr.writeDataToRecord("92015",pbsTableBean1.getBufferedFieldBuffer(),0,false);
--------------------------------------------------------------------------------------------------------------------------------
FieldBuffer常用方法:
写值voidput(Stringfield_name,intindex,Stringfield_value)throwPbsExcepiton
取值StringgetStringValue(Stringfield_name,intindex)
取最大记录数intgetMaxOccurce()
取指定域记录数intgetOccurance(Stringfield_name)
--------------------------------------------------------------------------------------------------------------------------------
界面方法:
publicclassint_xxxextendspbs.teller.ui.ProcessPanel{
publicbooleanshowPreProcess(){
例如:
Stringbusis_kind=this.getValue().getStringValue("busis_kind",0);//界面2显示前,获得界面1里的busis_kind的值
}
publicbooleancommitPreProcess(){
}
publicbooleancommitPostProcess(){
}
publicbooleanendTranProcess(){
}
}
执行顺序:
显示前调用showPreProcess
提交前调用commitPreProcess
提交后调用commitPostProcess
交易结束时调用endTranProcess
--------------------------------------------------------------------------------------------------------------------------------
域事件:
修改域事件,修改时触发modifyField
进入域事件,焦点进入域时触发enterField
离开域事件,焦点离开域修改时触发leaveField
焦点向上事件,按向上方向键时触发upField
焦点向下事件,按向下方向键或回车键时触发downField
--------------------------------------------------------------------------------------------------------------------------------
菜单:
菜单分3种类型0----静态菜单
1----动态菜单
2----条件菜单
命名规则:
静态菜单单个交易使用:
M_子系统_交易码_菜单名,多个交易公用:
M_子系统_PUB_菜单名
动态菜单M_DYNA_XML文件名
条件菜单M_COND_XML文件名
静态菜单、动态菜单可以直接调用,条件菜单在使用前必须更新,更新方法如下:
方法1(精确匹配):
String[]condition={"1","12","0"};
String[]columns={"last_flag","subj_attr","del_flag"};
pbs.teller.ui.uibean.PbsMenu.getMenu("M_DYNA_SUBJ_DICT").updateItem(columns,condition);
方法2(模糊匹配,"0#"表示以0开始的2位字符串):
String[]colNames={"subj_attr","busis_kind","last_flag"};
String[]values={"0#","'3'","1"};
PbsMenu.getMenu("M_COND_SUBJ_DICT").searchMenuXPathArray(colNames,values);
--------------------------------------------------------------------------------------------------------------------------------
打印
voidWsTxMgr.outputTxPrint(Stringform_name,FieldBufferprint_fieldbuffer,1,intpaper,intprint_direction);
注:
纸张类型paper0----窄纸
1----宽纸
2----凭证纸
3----A3纸
打印方向print_directionWsTxMgr.NORMALDIRECTION----正常打印方向
WsTxMgr.HORIZONTALDIRECTION----横向打印
打印分为套打、非套打
套打定义及格式都在IDE上定制
非套打定义在IDE上定制,格式在本地定制,如下
**(fm_4_01006------------------格式名称
数据定义
序号类型域名取值序号截取长度对齐方式格式菜单
1VALyear00R*****
2VALmonth_id00R*****
3VALovdr_date00R*****
4BEGIN1000L*****
5VALrecnoFN10L*****
6VALaccount10L*****
7VALcust_name10L*****
8VALout_jbc10L*****
9VALamt10L401****
10END000L*****
11VALremit_amt00L401****
12VALtlr_name00L*****
格式定义
$^L1-------------行间距
^3中国农业发展银行睡眠账户清单^2-----------字体
账别:
人民币*年*月*日
┏━━┯━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━┯━━━━━┯━━━━━━━┓
┃│││最后一笔│账户余额┃
┃序号│存款账号/汇票号码│户名││┃
┃│││发生日期│汇票金额┃^S----循环开始
┠──┼──────────────┼──────────────┼─────┼───────┨
┃*│*│*│*│*┃^E----循环结束
┠──┴───────┬──────┴──────────────┴─────┴───────┨
┃合计金额│*┃
┗━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
授权:
复核:
记账:
*
)**
publicbooleanshowPreProcess(){
//getRunmodel的几种模式
//FieldBufferrecordFB=newFieldBuffer();//pbsTableBean1.getValue();//newFieldBuffer();
if(WsTxMgr.getRunModel()=='1'){//复核模式
pbsTableBean1.setNeedCheckValue(WsTxMgr.getTxRequestFields());
pbsTableBean1.setValue(WsTxMgr.getTxRequestFields());
}elseif(WsTxMgr.getRunModel()=='2'){//修改模式
pbsTableBean1.setValue(WsTxMgr.getTxRequestFields());
}elseif(WsTxMgr.getRunModel()=='3'){//授权模式
pbsTableBean1.setValue(WsTxMgr.getTxRequestFields());
}elseif(WsTxMgr.getRunModel()=='4'){//提交模式
pbsTableBean1.setValue(WsTxMgr.getTxRequestFields());
}elseif(WsTxMgr.getRunModel()=='5'){//详细模式
pbsTableBean1.setValue(WsTxMgr.getTxRequestFields());
}
returntrue;
}
--------------------------------------------------------------------------------------------------------------------------------
pbsTablePane1.setBounds(30,72,730,270);
pbsTableBean1.setSumWidth(450);
//$$pbsTableBean1.move(216,120);
JLabel3.setText("操作提示:
Ctrl+G打印;Insert添加;Delete删除;End修改;对记录维护后,在本界面用F4键提交");
add(JLabel3);
JLabel3.setFont(newFont("Dialog",Font.PLAIN,14));
JLabel3.setBounds(113,350,564,19);
JLabel5.setText("注意:
当表格为空时,只能用鼠标双击表头添加数据");
add(JLabel5);
JLabel5.setFont(newFont("Dialog",Font.PLAIN,14));
JLabel5.setBounds(113,370,564,19);
43029
取界面输入的值
Stringsubj_name=WsTxMgr.getTxScreenFieldValue("subj_name",0);
取服务器后台的值