java – SWTException:Widget被释放
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – SWTException:Widget被释放,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1732字,纯文字阅读大概需要3分钟。
内容图文
![java – SWTException:Widget被释放](/upload/InfoBanner/zyjiaocheng/753/fb0e082f79094427acb7d606424f26c3.jpg)
当我第二次创建打开的新SWT应用程序窗口时,应用程序崩溃与SWTException:Widget被丢弃错误.怎么了?
这是我的代码:
摘要Controller.java:
public abstract class Controller {
protected View view;
public Controller(View v) {
view = v;
}
protected void render() {
data();
view.setData(data);
view.render();
listeners();
if (display)
view.open();
}
protected void data() {}
protected void listeners() {}
}
AboutController.java(代表新窗口):
public class AboutController extends Controller {
static AboutView view = new AboutView();
public AboutController() {
super(view);
super.render();
}
}
摘要View.java:
public abstract class View {
protected Display display;
protected Shell shell;
protected int shellStyle = SWT.CLOSE | SWT.TITLE | SWT.MIN;
private void init() {
display = Display.getDefault();
shell = new Shell(shellStyle);
};
protected abstract void createContents();
public View() {
init();
}
public void render() {
createContents();
}
public void open() {
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}
我的观点是AboutView.java
public class AboutView extends View implements ApplicationConstants {
protected void createContents() {
shell.setSize(343, 131);
shell.setText("About");
Label authorImage = new Label(shell, SWT.NONE);
authorImage.setBounds(10, 10, 84, 84);
authorImage.setImage(SWTResourceManager.getImage(AboutView.class,
"/resources/author.jpg"));
}
}
当我尝试创建新的应用程序窗口时,使用新的AboutController()然后出现Widget错误.
解决方法:
问题是您无法访问已经放置的小部件.在您的代码中,AboutController.view是静态的,因此在初始化类AboutController时只创建一次.关闭Shell后,它会自动处理,因此所有子窗口小部件也会被处理掉 – 包括您的视图对象.
当您再次打开窗口时,已经处理的视图将被移交给超级构造函数而不是新创建的视图.
内容总结
以上是互联网集市为您收集整理的java – SWTException:Widget被释放全部内容,希望文章能够帮你解决java – SWTException:Widget被释放所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。