Java Panel不会偶尔完全更新
更新 – 2011年9月21日
我已经对代码进行了初步粗略的审查,并且它看起来正在通过以下方式更新用户界面: SwingUtilities.invokeLater(new Runnable() { public void run() { // code goes here } }); UI的主要更新发生在一个地方,首先执行上面的包装,然后要求当前可见的面板在该线程内更新自己,所以它应该在EDT中,如果我理解正确的话? 也就是说,我可能会错过一些奇怪的地方.目前我正在使用我在这里找到的一些AspectJ代码: http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html 看看这是否会突出任何奇怪的地方,它没有做正确的事情. 除此之外,还有其他想法吗? Re:透明度假设 – 如何表现出来?我在找什么?虽然我已经做了很多工作来改进代码,但它很大程度上是从以前的人那里继承而来的,所以我并不是非常熟悉它可能会有所帮助:) Re:粘贴代码片段 – 我很乐意,但是如果没有缩小问题,我就无法想到一个合理的约束片段,我不知道问题可能存在于代码中. 感谢迄今为止的所有回复. 原始问题 我们有一个托管在第三方系统内的应用程序.我们的部分是返回的JPanel,主机应用程序(Lagan CRM)然后将该Panel嵌入到他们的应用程序中. 在大多数情况下,这种情况非常有效,但偶尔也会如此,并且在我们所知的一个实现中,面板无法正确更新 – 就像某些事情已经阻止了面板的一部分被更新. 在下面的屏幕截图中,我们的JPanel位于底部,它的左上角基本上是“INFO”按钮. 以下是一些演示此问题的屏幕截图: 在此示例中,问题在“Go unavailable”和“Dial”按钮区域可见. 在这个例子中,问题是在相同的一般区域,但它的尺寸不同,实际上我们没有找到关于异常区域/大小的任何共性. 在这个例子中,我与用户进行了更多的沟通,看起来发生的事情是用户在当前呼叫之前用户已经显示“GO UNAVAILABLE”按钮.然后他们开始与呼叫者进行对话,这意味着系统应该开始在左上方显示“CONNECT”,下面是电话号码,右侧有HANGUP按钮.正如你所看到的,它仅在它的外部更新,在中间区域有一个大块,根本没有更新,并且仍然表现得好像它们没有通话.除了看起来丑陋之外,它还会导致问题,因为有两个或三个按钮应该替换“GO UNAVAILABLE”,这意味着无法访问功能. 我只是想展示一些例子,这样你每次都可以看到它们是不同的块,但基本问题总是一样的. 一些基本统计数据: >仅在XP机器上发生. 任何提示,技巧,指导,其他问题的建议,我可以得到答案 – 甚至更好的解决方案:)将非常感激地收到. 解决方法
由于我无法看到代码这个答案更多来自你可以尝试用我所拥有的信息:)
>如果没有从EDT完成,更新JPanel很棘手.即使从EDT完成,我在尝试更改JPanel的整个结构并重新绘制它时也遇到了问题.相反,在这些地方,我已经改为使用JTabbedpane.删除选项卡并重新创建它.更容易做到.在这种情况下,我不确定这是否会有所帮助. 对不起,无法帮助.. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |