Salut,

Voilà le problème : J'affiche un browser (JDIC) intégré à un JPanel ou à une JFrame, peu importe. Jusqu'ici, tout va bien, la page html s'affiche bien, etc.

Seulement, tout se complique à la fermeture de la Frame ou de l'appli contenant le panel ! Il semble que le browser ne se ferme pas bien... En effet, lorsque je lance l'appli depuis Eclipse, après avoir fermé la frame, le fameux bouton "Terminate" de la console reste disponible, signe que tout ne se passe pas correctement...

Voici un petit bout de code à tester pour se rendre compte du problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.net.MalformedURLException;
import java.net.URL;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
import org.apache.log4j.Logger;
import org.jdesktop.jdic.browser.BrowserEngineManager;
import org.jdesktop.jdic.browser.IBrowserEngine;
import org.jdesktop.jdic.browser.WebBrowser;
 
import ch.elca.leaf.base.Version;
 
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.FormLayout;
 
public class Browser {
 
	/** Version revision of this class. */
	public static final Version IMPL_VERSION = new Version("$Revision$");
 
	/** The Logger */
	private static Logger s_logger = Logger.getLogger(Browser.class);
 
	/**
         * @param args
         */
	public static void main(String[] args) {
 
		JFrame frame = new JFrame("Browser");
		frame.setVisible(true);
		frame.setSize(800, 600);
 
		BrowserEngineManager bem = BrowserEngineManager.instance();
 
		IBrowserEngine be = bem.getActiveEngine();
		if (be == null) {
			bem.setActiveEngine(BrowserEngineManager.IE);
		}
 
		JPanel m_browserPanel = null;
		try {
			WebBrowser.setDebug(true);
			WebBrowser browser = new WebBrowser(new URL("http://www.google.com"), true);
			browser.setName("Browser");
 
			FormLayout layout = new FormLayout("fill:1dlu:grow", "fill:1dlu:grow");
			PanelBuilder builder = new PanelBuilder(layout);
			builder.add(browser);
			m_browserPanel = builder.getPanel();
		} catch (MalformedURLException e) {
			s_logger.fatal(e.getMessage(), e);
		}
 
		frame.add(m_browserPanel);
		frame.validate();
	}
}
Ici, j'ajoute le browser à un panel, puis le panel à une frame, pour reproduire les conditions de mon appli. Le passage par un FormLayout permet d'éviter les problèmes de redimensionnement dus au conflit AWT/SWING.

Dans mon cas, la ligne suivante est inenvisageable :
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Si quelqu'un a une idée, n'hésitez pas !
Merci d'avance !