精華區beta java 關於我們 聯絡資訊
※ 引述《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
slalala:受教了 08/16 00:10
slalala:SWT compoment無法被fgc我嚇到了XD 08/16 00:12
kene:因為 SWT 通通是用 JNI 寫的, 所以不會自動處理也很正常 08/16 00:13
qrtt1:您受驚了 @o@ 不過沒什麼好怕的,只要有閱讀手冊的人都明白 08/16 00:17
slalala:我完全沒碰過SWT 呵呵呵 08/16 00:18