当前位置:首页 > NC单据开发初学手册V1.0
m_CardPanel.getCard().addTabbedPaneTabChangeListener(editCtrl, 1); }
m_CardPanel.getCard().addEditListener(\页签afterEdit()加监听 m_CardPanel.getCard().addEditListener(\ m_CardPanel.getCard().addEditListener(\
第四步、编写返回BillCardPanel(UAP封装的卡片容器)的方法,用来在UI类(ClientUI)或者按钮处理类(ButtonEventHandler)调用。
第五步、按业务需要,可以将方便与卡片处理的相关方法写在这里。
8.4.2.3 按钮控制类(ButtonCtrl)
按钮控制类的作用,是进行 初始化按钮 和 按钮状态控制的
第一步、在UI包里创建ButtonCtrl类
第二步、在ButtonCtrl类中添加一个构造方法,参数为UI类。 第三步、在ButtonCtrl类的初始化方法中,new 一个ButtonTree对象
ButtonTree的对象构造的时候实际上就是在sm_butnregister这个表中按照构造中的节点号,来查询这个节点下的所有注册的按钮,并将按钮放入界面上。
第四步、在初始化方法中,将我们构造的ButtonObject 用ButtonTree类中的.getButton(String funcode)的这种方式获得实例。
第五步、编写setButtonStatus() 方法。根据不同的界面编辑状态,来用ButtonObject的setEnabled(boolean bl)方法来控制按钮是否可以编辑。
第六步、在初始化方法中调用setButtonStatus()设置初始的按钮状态,之后调用ClientUI中updateButtons()方法来将按钮状态等按钮属性 刷新到界面上。
m_ClientUI.updateButtons();
具体代码可以参照nc.ui.zjs.train.ButtonCtrl类来编写。
8.5 步骤五、定制界面UI类
第一步、在nc.ui.zjs.train包中建立ClientUI类,继承自ToftPanel类 public class ClientUI extends ToftPanel{
- 40 -
//…… }
第二步、在初始化方法中,做以下处理。
1、设置常量类,将节点信息,客户端登陆信息维护进去
2、初始化卡片界面,列表界面,卡片界面的控制器,列表界面控制器 3、初始化前台缓存
4、初始化按钮,初始化按钮的事件处理类。 public void initialize() {
}
// 初始化卡片界面和模板
CardPanel m_cardPanel = new CardPanel(this); // 初始化卡片控制器(添加监听和卡片相关控制都在此类处理) m_cardCtrl = new CardPanelCtrl(this, m_cardPanel); // 初始化列表
ListPanel m_listPanel = new ListPanel(this); // 初始化列表控制器
m_listCtrl = new ListPanelCtrl(this, m_listPanel); // 初始化前台缓存
m_Model = new Model(); // 初始化按钮 initButtons();
// 设置布局
setLayout(new CardLayout()); // 初始化节点信息和客户端常量 initNodeInfo();
这样,就完成了UI类
8.6 步骤六、定制按钮事件处理类
7.6.1 编写ButtonEventHandler的步骤
处理按钮和事件的类ButtonEventHandler是我们单据比较核心的地方,大部分的业务逻辑都是根据按
- 41 -
钮驱动开始的。所以我们单独把按钮事件处理的类单独出来。
ButtonEventHandler的构造也是需要一个ClientUI的参数,来保证和UI类关联,之后根据ButtonCtrl类来判断我们点击的是哪个按钮,之后来做具体的按钮点击后处理。
public ButtonEventHandler(ClientUI clientUI) {
private ButtonCtrl getButtonCtrl() { }
public void onButtonClick(ButtonObject bo) throws Exception {
if (bo == getButtonCtrl().m_boAdd) {
onAdd();
return m_ClientUI.getButtonCtrl(); }
m_ClientUI = clientUI;
} else if (bo == getButtonCtrl().m_boDel) {
onDel();
} else if (bo == getButtonCtrl().m_boMod) {
onMod();
} else if (bo == getButtonCtrl().m_boSave) {
onSave();
} else if (bo == getButtonCtrl().m_boCancel) {
onCancel();
} else if (bo == getButtonCtrl().m_boAddLine) {
onAddLine();
} else if (bo == getButtonCtrl().m_boDelLine) {
getCard().delLine();
} else if (bo == getButtonCtrl().m_boCopyLine) {
// 复制行 onCopyLine();
} else if (bo == getButtonCtrl().m_boPasteLine) {
// 粘贴行 onPasteLine();
} else if (bo == getButtonCtrl().m_boPasteLastLine) {
// 粘贴到最后一行
- 42 -
onPasteLastLine();
} else if (bo == getButtonCtrl().m_boQuery) {
onQuery();
} else if (bo == getButtonCtrl().m_boPrintPriview) {
onPrintPreview();
} else if (bo == getButtonCtrl().m_boPrint) {
onPrint();
} else if (bo == getButtonCtrl().m_boRefresh) {
onRefresh();
} else if (bo == getButtonCtrl().m_boFind) {
onFind();
} else if (bo == getButtonCtrl().m_boSwitch) {
onSwitch();
} else if (bo == getButtonCtrl().m_boFirstPage) {
// 首页 onFirst();
} else if (bo == getButtonCtrl().m_boPreviousPage) {
// 上页
onPrevious();
} else if (bo == getButtonCtrl().m_boNextPage) {
// 下页 onNext();
} else if (bo == getButtonCtrl().m_boLastPage) {
// 末页 onLast();
} else if (bo == getButtonCtrl().m_boSelectAll) {
// 全选
onBoSelectAll();
} else if (bo == getButtonCtrl().m_boCancelAll) {
// 全消
onBoCancelAll();
} else { }
SCMEnv.error(\);
- 43 -
共分享92篇相关文档