java gui

各位老师、同学们:
      大家“非常好”!
      由于之前碰到过给分录设置默认值的问题,用啦很久时间基本解决啦这个问题,特拿来和大家分享一下,如果您有其他更好的方法,或者以下内容有不合理的地方,请您一定指出:
      一,如果需要设置的默认值是个固定的值,解决方法:
打开BIM(业务建模视图)->打开业务单元->在大纲视图(如果看不到这个视图可以:窗口->显示视图->其他->常规->大纲)中点开分录,选择要设置默认值的字段右击属性,在“默认值”中属性中设置值
      二,如果需要在代码里面动态设置默认值,解决方法:
1. 添加条目按钮(分录面板的三个按钮之一):
//点击添加分录按钮后 设置默认值
            kdtEntrys_detailPanel.addAddListener(new com.kingdee.eas.framework.client.multiDetail.IDetailPanelListener() {
                        public void beforeEvent(com.kingdee.eas.framework.client.multiDetail.DetailPanelEvent event) throws Exception {
                                IObjectValue vo = event.getObjectValue();
                                //设置默认值
                                vo.put("matid", "MT0001");
                                vo.put("matmc","变形金刚");
                        }
                        public void afterEvent(com.kingdee.eas.framework.client.multiDetail.DetailPanelEvent event) throws Exception {
                        }
                });
//添加条目按钮 的点击事件
            this.kdtEntrys_detailPanel.getAddNewLineButton().addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                // TODO Auto-generated method stub
                                MsgBox.showInfo("添加分录按钮的点击事件!");
                        }
                        });
2. 插入条目按钮(分录面板的三个按钮之一):
//点击插入分录按钮后 设置默认值
                kdtEntrys_detailPanel.addInsertListener(new com.kingdee.eas.framework.client.multiDetail.IDetailPanelListener() {
                        public void beforeEvent(com.kingdee.eas.framework.client.multiDetail.DetailPanelEvent event) throws Exception {
                                IObjectValue vo = event.getObjectValue();
                                //设置默认值
                                vo.put("matid", "MT0002");
                                vo.put("matmc","生铁");
                        }
                        public void afterEvent(com.kingdee.eas.framework.client.multiDetail.DetailPanelEvent event) throws Exception {
                        }
                });
3. 使用代码来添加一行数据:在loadField()方法中使用代码:this.addLine(kdTable);来新增一行。
这时设置默认值的方法:
//override方法
        protected IObjectValue createNewDetailData(KDTable arg0) {
                StudentEntryInfo entry = new StudentEntryInfo();
                entry.setMatId("MT003");
                entry.setMatmc("生命之水");
                return entry;
        }
有人说只要一个createNewDetailData方法就可以啦,但是我的环境下是除非this.addLine()方法被调用否则根本不会触发这个方法,如果您知道原因,欢迎您指出!
gruch5 发表于 2011-4-17 14:09

补充一下:给新增分录、插入分录 按钮添加监听的代码是写在: initUIContentLayout() 方法中的,这个方法是override过来的!
jinsfu 发表于 2011-5-4 15:48

感谢!很有用啊!
beihanggo 发表于 2011-5-19 16:09

引用
补充一下:给新增分录、插入分录 按钮添加监听的代码是写在: initUIContentLayout() 方法中的,这个方法是 ...
gruch5 发表于 2011-4-17 14:09


必须有这个限制吗?只要控件已经初始化完成后的任何地方都可以吧。

你可能感兴趣的:(java,PHP,bbs)