作者qrtt1 (null)
站内java
标题Re: [问题] SWT Browser
时间Sat Aug 16 00:00:35 2008
※ 引述《slalala (S-ATA提高当好人的门槛值)》之铭言:
: 其实我只写过Swing 不过我有抓过SWT browser的范例
: 就我swing的经验 应该是dispose的问题
: 因此才给那几个关键字
: 不过我不懂SWT 留给高手解释语法
: 以下直接把我手边的dispose范例
: Shell composite = SWT_AWT.new_Shell(display, embedded);
: //略
: frame.addWindowListener(new WindowAdapter() {
: public void windowClosing(WindowEvent e)
: {
: e.getWindow().dispose();
: composite.dispose();
: }
: });
Swing 的 dispose 和 SWT 的 dispose 意义上极大的不同。
SWT 的元件并不会被自动 GC
http://www.eclipse.org/articles/swt-design-2/swt-design-2.html
如果在 Swing 上内嵌就不会需要有以下这段 code
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
这是每一个 SWT 程式都会需要的一个 MAIN EVENT LOOP
(如果写过 gtk 的就会觉得是不是很像呢 XD)
所有的元件都会与 display 或 shell 产生关联
依据 url 内的 rule 2,只要 parent 被 dispose 他的子元件都会被 dispose
所以,只能推测您内嵌使用忘了 dispose 导致 Browser 没有被释放。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.80.216
1F:推 slalala:受教了 08/16 00:10
2F:→ slalala:SWT compoment无法被fgc我吓到了XD 08/16 00:12
3F:推 kene:因为 SWT 通通是用 JNI 写的, 所以不会自动处理也很正常 08/16 00:13
4F:→ qrtt1:您受惊了 @o@ 不过没什麽好怕的,只要有阅读手册的人都明白 08/16 00:17
5F:推 slalala:我完全没碰过SWT 呵呵呵 08/16 00:18