zhaopeinow
2011-10-14 17:55
浏览 256
已采纳

swt 父窗体中打开子窗体问题

SWT 刚开始写,向高手取经

在父窗体中的子窗体代码:
[code="java"]ApiTestPanel api = new ApiTestPanel(url);
api.open();[/code]

子窗体中打开方式(父窗体也是这么打开的)
[code="java"]public void open() {
_shell.open();
while (!_shell.isDisposed()) {
if (!_display.readAndDispatch())
_display.sleep();
}
_display.dispose();
}[/code]
异常如下:
Exception in thread "main" org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:4083)
at org.eclipse.swt.SWT.error(SWT.java:3998)
at org.eclipse.swt.SWT.error(SWT.java:3969)
at org.eclipse.swt.widgets.Display.checkDisplay(Display.java:766)
at org.eclipse.swt.widgets.Display.create(Display.java:828)
at org.eclipse.swt.graphics.Device.(Device.java:137)
at org.eclipse.swt.widgets.Display.(Display.java:480)
at org.eclipse.swt.widgets.Display.(Display.java:471)
at com.huawei.idac.tools.ui.ApiTestPanel.(ApiTestPanel.java:45)
at com.huawei.idac.tools.ui.ManagePanel$3.widgetSelected(ManagePanel.java:223)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at com.huawei.idac.tools.ui.ManagePanel.open(ManagePanel.java:435)
at com.huawei.idac.tools.Main.main(Main.java:21)

另外还想问一个小问题,SWT中 复选框怎么弄啊?
多谢各位大虾啊!!!!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • hongmei_xp 2011-10-15 12:53
    已采纳

    SWT checkbox example:
    http://www.java2s.com/Tutorial/Java/0280__SWT/CheckBoxButton.htm

    使用Button,但是Style设置为Check

    点赞 打赏 评论
  • hongmei_xp 2011-10-14 23:14

    使用Display.asyncExec(Runnnable )打开。如果我没有记错的话。。

    复选框不就是CheckBox嘛?

    点赞 打赏 评论
  • hongmei_xp 2011-10-17 10:02

    Ok。 一般来说,在父窗体中打开子窗体,我一般都是让子窗体实现一个Dialog,然后打开这个Dialog。

    点赞 打赏 评论

相关推荐 更多相似问题