首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有SWT.VIRTUAL的SWT表提高了StackOverflowError

带有SWT.VIRTUAL的SWT表提高了StackOverflowError
EN

Stack Overflow用户
提问于 2009-09-24 11:40:12
回答 2查看 1.6K关注 0票数 2

在最近安装了Windows7专业版之后,我遇到了一个奇怪的问题,那就是在SWT中从填充的表中删除一个TableItem。它特定于Windows7和表的SWT.VIRTUAL样式常量。

考虑以下代码:

代码语言:javascript
复制
table = new Table(parent, SWT.VIRTUAL | Skin.SCROLL_STYLE |
                          SWT.FULL_SELECTION | SWT.BORDER);
TableItem item = new TableItem(table, SWT.NONE);
item.setText("Table item");
table.remove(0);

这会导致如下的StackOverflowError:

代码语言:javascript
复制
Caused by: java.lang.StackOverflowError
    at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
    at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2312)
    at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:334)
    at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:200)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4036)
    at org.eclipse.swt.widgets.Table.windowProc(Table.java:5520)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4602)
    at org.eclipse.swt.internal.win32.OS.SendMessageW(Native Method)
    at org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:3106)
    at org.eclipse.swt.widgets.Table.wmNotifyChild(Table.java:6319)
    at org.eclipse.swt.widgets.Control.wmNotify(Control.java:4877)
    at org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:1757)
    at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:4507)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4000)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4602)
    at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
    at ...

如上所示,堆栈从显示器的windowProc调用循环到操作系统的CallWindowProcW;这使我怀疑它与特定于Windows7的SWT实现有关。堆栈跟踪最终源自table.remove(0)行。

在Vista、XP或Mac OS X下测试没有问题。

删除SWT.VIRTUAL样式常量可以解决这个问题,但不允许在表中使用自定义对象。

这似乎是一个SWT错误,或者我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-24 12:09:15

看起来像窃听器。用一个测试案例报告给SWT的人。

票数 3
EN

Stack Overflow用户

发布于 2009-09-28 14:02:38

试试item.dispose()吧?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1471142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档