已有101人关注
JAVA项目开发全程实录—03企业人事管理系统中企业架构中存在的问题(非常急,谢谢)
发表在Java图书答疑 2010-06-29
是否精华
版块置顶:
首先感谢明日科技老师的指教!企业人事管理系统能够基本运行,其中有一个小问题,就是企业架构里的单位始终不按顺利显示,每点一次变化一次,在其他窗口中也是如此,好象单位在不停地循环,例如在单位T下建有1、2、3三个单位,正常显示T下的顺序为123,但单击除企业架构外其他菜单后,再单击企业架构后,显示顺序变为了321,总之不停地变换顺序,能麻烦老师解答下是怎么回事造成的,以及如何解决呢?


我仔细查看了下,不是查询的SQL语句的问题,也与SQL语句中是否使用排序查询无关,好象与生成企业架构树的代码有关系,但我仔细阅读发现与下面标注的两条语句有关,能麻烦老师指出如何改正吗?涉及生成企业架构树的具体代码为:
company = (TbDept) dao.queryDeptById(1);
root = new DefaultMutableTreeNode(company.getName());
Set depts = company.getTbDepts();
for (Iterator iter = depts.iterator(); iter.hasNext();) {
TbDept dept = (TbDept) iter.next();//好象与此条语句有关,但不知怎么修改
DefaultMutableTreeNode deptNode = new DefaultMutableTreeNode(dept
.getName());//好象与此条语句有关,从集合中第二条记录开始读的,但不知怎么修改
root.add(deptNode);
if (dept.getTbDepts().size() != 0) {
Set sonDepts = dept.getTbDepts();
for (Iterator iterator = sonDepts.iterator(); iterator
.hasNext();) {
TbDept sonDept = (TbDept) iterator.next();//好象与此条语句有关,但不知怎么修改
deptNode.add(new DefaultMutableTreeNode(sonDept.getName()));//好象与此条语句有关,从集合中第二条记录开始读的,但不知怎么修改
}
}
}
分享到:
精彩评论 5
小小邪
学分:0 LV1
2010-06-30
沙发
dept.getTbDepts();
这个方法获取的set对象是HashSet类的实例对象,你使用TreeSet创建一个对象封装它。
例如:
TreeSet ts=new TreeSet(dept.getTbDepts());
然后使用ts.interator()方法获取迭代器试试。
写代码难
学分:0 LV1
TA的每日心情
郁闷
2023-06-17 23:44:26
2010-06-30
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
dept.getTbDepts();
这个方法获取的set对象是HashSet类的实例对象,你使用TreeSet创建一个对象封装它。
例如:
TreeSet ts=new TreeSet(dept.getTbDepts());
然后使用ts.interator()方法获取迭代器试试。
[/FIELDSET]

回复:
  老师,我试着修改了下,代码如下,但出现了错误(错误提示如下。可能是我对TreeSet不会用,试了下还是不行,您能再详细点吗?万分感谢!

修改后代码:
                    company = (TbDept) dao.queryDeptById(1);
root = new DefaultMutableTreeNode(company.getName());
TreeSet depts = new TreeSet(company.getTbDepts());
for (Iterator iter = depts.iterator(); iter.hasNext();) {
TbDept dept = (TbDept) iter.next();
DefaultMutableTreeNode deptNode = new DefaultMutableTreeNode(dept
.getName());
root.add(deptNode);
if (dept.getTbDepts().size() != 0) {
TreeSet sonDepts = new TreeSet(dept.getTbDepts());
for (Iterator iterator = sonDepts.iterator(); iterator
.hasNext();) {
TbDept sonDept = (TbDept) iterator.next();
deptNode.add(new DefaultMutableTreeNode(sonDept.getName()));
}
}
}

出现错误提示:
   Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.mwq.hibernate.mapping.TbDept cannot be cast to java.lang.Comparable
at java.util.TreeMap.put(TreeMap.java:542)
at java.util.TreeSet.add(TreeSet.java:238)
at java.util.AbstractCollection.addAll(AbstractCollection.java:305)
at java.util.TreeSet.addAll(TreeSet.java:295)
at java.util.TreeSet.<init>(TreeSet.java:143)
at com.mwq.frame.system.FrameworkPanel.<init>(FrameworkPanel.java:210)
at com.mwq.frame.IndexFrame$10.valueChanged(IndexFrame.java:361)
at javax.swing.JTree.fireValueChanged(JTree.java:2823)
at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3194)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:629)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1078)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:287)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTreeSelectionModel.java:170)
at javax.swing.JTree.setSelectionPath(JTree.java:1598)
at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.java:2316)
at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(BasicTreeUI.java:3525)
at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(BasicTreeUI.java:3464)
at java.awt.Component.processMouseEvent(Component.java:6131)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3962)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
东北虎
学分:0 LV1
2010-07-01
地板
您好,出现上述问题是类型不匹配,请检查对象类型。
写代码难
学分:0 LV1
TA的每日心情
郁闷
2023-06-17 23:44:26
2010-07-01
4L
企业人事管理系统里企业架构部分存在明显的bug。那就是:除第一级单位保持不变外,其余单位在位置上总是不停变化,如一楼所示,但我已经请教了明日科技的老师好多次,而没有非常明确的解答,在此,恳请明日科技老师能快速解决这个bug,并交解决后的这段代码发送上来,非常感谢!
小小邪
学分:0 LV1
2010-07-07
5L
[FIELDSET][LEGEND]引自:4楼[/LEGEND]
企业人事管理系统里企业架构部分存在明显的bug。那就是:除第一级单位保持不变外,其余单位在位置上总是不停变化,如一楼所示,但我已经请教了明日科技的老师好多次,而没有非常明确的解答,在此,恳请明日科技老师能快速解决这个bug,并交解决后的这段代码发送上来,非常感谢!
[/FIELDSET]

回复:
  我已经说过原理了,就是Hibernate的实体类中获取子部门的getTbDepts()方法返回的是HashSet类的实例对象,这个对象是不管数据的排序顺序的,甚至每次排列都不一样。所以要求尝试使用TreeSet把获取的HashSet类的实例对象封装一下就解决问题了,至于怎么封装是基础问题,就是把getTbDepts()方法获取的对象作为TreeSet类构造方法的参数来创建一个新的TreeSet集合对象,遍历这个对象会保持数据的排序顺序。
首页上一页 1 下一页尾页 5 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照