Bonjour,

Je crée dynamiquement un applet en javascript dans un élément "DIV" créé aussi dynamiquement et qui est ajouté aux éléments de "BODY" (Cf. code Javascript ci-dessous qui est écrit pour Firefox Mozilla).

Mon code Java se trouve dans le jar "applet.jar" et il est détaillé plus loin ci-dessous. Mon applet est composé d'éléments SWING.
Quand je clique sur le bouton "close" de mon applet, la fonction Java "closeApplication" appelle "stop()" qui enregistre les paramètres sélectionnés et fait appel à la fonction Javascript "closeApplet", qui elle, récupère le tableau transmis par Java puis détruit l'élément HTML "DIV" qui contenait l'applet.

Mon problème est le suivant :

J'aimerais détruire mon applet Java à partir de mon code Java après avoir appelé la fonction "closeApplet" de Javascript. J'ai essayé plusieurs méthodes mais je crois que quand Java appelle la fonction "closeApplet", il ne fait pas la suite de la méthode Java et il réinitialise l'applet, mais comme le conteneur HTML "DIV" n'existe plus, tout plante au bout de quelques secondes.

Rq : La fonction "destroy" de JApplet, placé après la fonction call, ne marche pas.

Est-ce que vous savez résoudre ce problème ?

Merci beaucoup par avance,
Eva


CODE JAVASCRIPT :

Code javascript : 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
function getListByString(){ 
 
    var div=document.createElement("div");
    div.setAttribute("id","divapplet");
    div.setAttribute("style","position:absolute; top:130; left:300;");
 
    var applet=document.createElement("embed");
    applet.setAttribute("code","payloadtm.DataAppletPicker.class");
    applet.setAttribute("archive","applet.jar,plugin.jar");
    applet.setAttribute("type","application/x-java-applet;version=1.3");
    applet.setAttribute("name","myApplet");
    applet.setAttribute("id","myAppletid");
    applet.setAttribute("width","500");
    applet.setAttribute("height","450");
    applet.setAttribute("codebase",".");
    applet.setAttribute("mayscript","true");
 
    applet.setAttribute("tonName",TonName);
 
    dojo.byId("bodyid").appendChild(div);
    dojo.byId("divapplet").appendChild(applet);
}
 
function closeApplet (tabPara){
 
//Récupération des éléments de tabPara => TODO
 
  dojo.byId("divapplet").innerHTML="";
 
}

CODE JAVA :


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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import netscape.javascript.*;
import java.net.*;
 
public class DataAppletPicker extends JApplet{
 
	protected JPanel buttonPanel = new JPanel();
	private JPanel jPanel1 = new JPanel();
	protected JPanel inputPanel = new JPanel();
	private BorderLayout borderLayout1 = new BorderLayout();
	protected JPanel messagePanel = new JPanel();
	private BorderLayout borderLayout2 = new BorderLayout();
 
	private JScrollPane tmListScrollPane = new JScrollPane();
	private JLabel messageLabel = new JLabel();
	private JButton addButton = new JButton();
	private JButton closeButton = new JButton();
	private JPanel filterPanel = new JPanel();
	private JLabel filterLabel = new JLabel();
	private JTextField tmFilter = new JTextField(20);
	private JTable tmTable = new JTable();
 
	private String tmSelected = null;
	private TMESTableModelFilter tmTableModel;
 
	private Vector collection_ = new Vector();
 
 
	URL urlProperties;
        String TonName; 
	String fileParameters="";
	String propertiesFileName = "data/param.properties";
	URL urlParameterList;
	JSObject win;
 
	public void init() {
 
	tonName=getParameter("TonName");
    	win = JSObject.getWindow(this);
 
    	try {
 
    	     urlProperties = new URL(getCodeBase(), propertiesFileName);
    	     urlParameterList = new URL(getCodeBase(), "data/PARAM-" + tonName 
 
+ ".txt");
    		try {
 
 
MyAppletManager.loadPropertiesFile(tonName,urlProperties,urlParameterList);
	         } catch (Exception e) {System.out.println(e);}
    	}
    	catch(Exception e) {
    		e.printStackTrace();
    	}
	try {
		jbInit();
	} catch (Exception e) {
		e.printStackTrace();
	}
 
	messageLabel.setText(tonName + " PARAM List : ");
 
        }
 
	private void jbInit() throws Exception {
 
		Container mainPane = this.getContentPane();
		jPanel1.setLayout(borderLayout1);
		inputPanel.setLayout(borderLayout2);
		mainPane.setLayout(new BorderLayout());
		mainPane.add(buttonPanel, BorderLayout.SOUTH);
		mainPane.add(jPanel1, BorderLayout.CENTER);
		JPanel topPanel = new JPanel(new BorderLayout());
		topPanel.add(messagePanel, BorderLayout.CENTER);
		jPanel1.add(inputPanel, BorderLayout.CENTER);
		jPanel1.add(topPanel, BorderLayout.NORTH);
 
		addButton.setText("Add PARAM");
		addButton.addActionListener(new java.awt.event.ActionListener()    
                {
			public void actionPerformed(ActionEvent e) {
				addButton_actionPerformed(e);
			}
		});
 
		closeButton.setText("Close");
		closeButton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				closeButton_actionPerformed(e);
			}
		});
 
 
		tmTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tmTableModel = new 
TableModelFilter(tmTable.getModel(),MyAppletManager.gettmListApplet(),tmFilter);
 
		tmTable.setModel(tmTableModel);
		tmListScrollPane.getViewport().add(tmTable, null);
		inputPanel.add(tmListScrollPane, BorderLayout.CENTER);
		messagePanel.setLayout(new BorderLayout());
		messagePanel.add(filterPanel, BorderLayout.NORTH);
		messagePanel.add(messageLabel, BorderLayout.WEST);
		buttonPanel.add(addButton);
		buttonPanel.add(closeButton); 
 
	}
 
	void addButton_actionPerformed(ActionEvent e) {
		//TO DO
	}
 
	void closeButton_actionPerformed(ActionEvent e) {
		closeApplication();
	}
 
	protected void closeApplication() {
		//dispose();
		//setVisible(false);
		stop();
	}
 
	public void stop() {
 
		if (collection_.size()!=0) {
			String paramCollect []= new String[getCollection().size()];
			paramCollect[0] = (getCollection()).toString();
			win.call("closeApplet",paramCollect);
		}
 
    	else {
    		String paramCollect []= new String[1];
    		paramCollect[0]="empty";
			win.call("closeApplet",paramCollect);
    	}
	}
 
	public Vector getCollection() {
		return collection_;
	}
 
	public void start() {
		show();
	}
 
	public void destroy(){
 
	}
}