Bonjour,
me revoili me revoilou pour un autre problème (toujours aussi simple que les précédents je pense, mais que je ne sais pas le résoudre étant débutant...). Alors le problème est le suivant : quand je lance mon petit programme, le processeur s'emballe... et bien sûr je ne peux plus utiliser mon programme...
Je pense que le problème vient de ma boucle for dans mon Canvas mais je ne suis pas sûr...
Merci d'avance pour vos réponses.
Cordialement,
Coralex
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class CProgTPE extends JFrame {
  CCanvas_1 m_canvas1;
  JTextField champ_massevolumique,champ_volume,champ_poussee,champ_masse,champ_tempsv;
  JTextField champ_vitesse,champ_pesanteur,champ_surface,champ_Cz,champ_Cx,champ_tempsh;
  JLabel textefin;
  float massevolumique, vitesse, masse, volume,poussee,cx,cz,surface,pesanteur, poids, pousseearchimede;
  int tempsv,tempsh;	
 
 
 
  public static void main(String[] args) {
    CProgTPE choix = new CProgTPE("TPE avion");
 
    choix.pack();
    choix.setSize(900,700); 
    choix.setResizable(false);
	choix.setVisible(true); 
  }
 
 
 
	// Le constructeur 
  CProgTPE(String titre) {
    super(titre); 
 
	//*******************************************
 
   // Forcer le thème natif
    try {
       UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    }
    catch(Exception ex) {
       System.err.println("Erreur de Look&Feel\n"); 
    }
 
    setLayout(new GridLayout(1,3));
 
    JPanel textes = new JPanel();
    JPanel courbesh = new JPanel();
	JPanel courbesv = new JPanel();
 
	textes.setLayout(new GridLayout(13,1));
 
	JPanel presentation = new JPanel();
 
	presentation.setLayout(new GridLayout(4,1));
 
	JLabel texte1 =  new JLabel(" Ce prgramme détermine la stabilisation de l'avion, ");
    presentation.add(texte1); 
 
	JLabel texte1_1 = new JLabel(" en fonction des paramètres entrés. "); 
   	presentation.add(texte1_1);
 
	JLabel texte2 = new JLabel(" Entrez dans les différentes cases, les variables demandées, ");
	presentation.add(texte2);
 
	JLabel texte2_2 = new JLabel(" certaines sont présentes par défaut. ");
	presentation.add(texte2_2);
 
	textes.add(presentation);
 
	JPanel champ1 = new JPanel();
	JLabel texte3 = new JLabel("Poussée de l'avion (en N) :");
	champ1.add(texte3);
	champ_poussee= new JTextField(10);
	champ_poussee.setText("0.0");
	champ1.add(champ_poussee);
	textes.add(champ1);
 
	JPanel champ2 = new JPanel();
    JLabel texte4 = new JLabel("Masse de l'avion (en kg) :");
	champ2.add(texte4);
	champ_masse = new JTextField(10);
	champ_masse.setText("0.0");
	champ2.add(champ_masse);
	textes.add(champ2);
 
	JPanel champ3 = new JPanel();
    JLabel texte5 = new JLabel("Volume de l'avion (en m^3) :");
	champ3.add(texte5);
	champ_volume = new JTextField(10);	
	champ_volume.setText("0.0");
	champ3.add(champ_volume);
	textes.add(champ3);
 
	JPanel champ4 = new JPanel();
    JLabel texte6 = new JLabel("Pesanteur (U.S.I) :");
	champ4.add(texte6);
	champ_pesanteur = new JTextField(10);
	champ_pesanteur.setText("9.81");
	champ4.add(champ_pesanteur);
    textes.add(champ4);
 
    JPanel champ5 = new JPanel();
    JLabel texte7 = new JLabel("Vitesse (en m/s) :");
	champ5.add(texte7);
	champ_vitesse = new JTextField(10);
	champ_vitesse.setText("0.0");
	champ5.add(champ_vitesse);
	textes.add(champ5);
 
	JPanel champ6 = new JPanel();
	JLabel texte8 = new JLabel("Masse volumique du fluide (en kg/m^3) :");
	champ6.add(texte8);
	champ_massevolumique = new JTextField(10);
	champ_massevolumique.setText("1.12");
	champ6.add(champ_massevolumique);
	textes.add(champ6);
 
	JPanel champ7 = new JPanel();
	JLabel texte9 = new JLabel("Cx (sans unités) :");
	champ7.add(texte9);
	champ_Cx = new JTextField(10);
	champ_Cx.setText("0.0");
	champ7.add(champ_Cx);
	textes.add(champ7);
 
	JPanel champ8 = new JPanel();
	JLabel texte10 = new JLabel("Cz (sans unités) :");
	champ8.add(texte10);
	champ_Cz = new JTextField(10);
	champ_Cz.setText("0.0");
	champ8.add(champ_Cz);
	textes.add(champ8);
 
	JPanel champ9 = new JPanel();
	JLabel texte11 = new JLabel("Surface de voilure (en m^2) :");
	champ9.add(texte11);
	champ_surface = new JTextField(10);
	champ_surface.setText("0.0");
	champ9.add(champ_surface);
	textes.add(champ9);
 
	JPanel champ10 = new JPanel();
	JLabel texte12 = new JLabel("Temps accélération verticale (en s) :");
	champ10.add(texte12);
	champ_tempsv = new JTextField(10);
	champ_tempsv.setText("150");
	champ10.add(champ_tempsv);
	textes.add(champ10);
 
	JPanel champ11 = new JPanel();
	JLabel texte13 = new JLabel("Temps accélération horyzontale (en s) :");
	champ11.add(texte13);
	champ_tempsh = new JTextField(10);
	champ_tempsh.setText("150");
	champ11.add(champ_tempsh);
	textes.add(champ11);
 
	JPanel calcule = new JPanel();
	JButton calculer = new JButton("Calculer");
    calculer.addActionListener(new CActionCalculer());
	calcule.add(calculer);
 
    textefin =  new JLabel("Aucun calcul effectué.");
    textefin.setFont(new Font("Monospaced", Font.PLAIN,12));
    calcule.add(textefin);
 
    textes.add(calcule);
 
	add(textes);
 
	m_canvas1 = new CCanvas_1();
	courbesh.add(m_canvas1);
 
 
    add(courbesh);
 
 
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
 
 
  }
 
  class CCanvas_1 extends Canvas {
		// Constructeur
		CCanvas_1() {
			// Arrière-plan noir
			setBackground(Color.black);
 
			// Premier plan (= couleur du dessin) vert
			setForeground(Color.green);
		}
 
		// La méthode la plus importante: c'est là qu'on dessine !
		public void paint(Graphics g) {
			double x;
			double y;
			int xpos,ypos,abscisse;
			abscisse = tempsh/150;
 
			// Placement de l'origine
			g.translate(0,150);
 
			// Dessin des axes
			g.setColor(Color.red);
			g.drawLine(0,0,0,150);
			g.drawLine(-150,1,150,1);
			g.drawString("0",1,12);
			g.drawString("150",4,147);
			g.drawString("150",135,12);
			g.drawString("-150",4,-140);
 
			// Couleur servant à dessiner la fonction
			g.setColor(new Color(255,255,0));
 
			for(x=0; x<=tempsh; x += abscisse) {
				y = masse/x;	  
				xpos = (int) x; 
				ypos = (int) (-y); 
 
				g.fillOval(xpos,ypos,2,2);
			}
 
		} 	
		public Dimension getMinimumSize() {
			return new Dimension(150,300);
		}
		public Dimension getPreferredSize() {
			return getMinimumSize();
		}
    }  
  class CActionCalculer implements ActionListener {
	public void actionPerformed(ActionEvent e) {
		try {
			// importation des données de calcul
			cx = Float.parseFloat(champ_Cx.getText());
			cz = Float.parseFloat(champ_Cz.getText());
			poussee = Float.parseFloat(champ_poussee.getText());
			masse = Float.parseFloat(champ_masse.getText());
			pesanteur = Float.parseFloat(champ_pesanteur.getText());
			vitesse = Float.parseFloat(champ_vitesse.getText());
			massevolumique = Float.parseFloat(champ_massevolumique.getText());
			volume = Float.parseFloat(champ_volume.getText());
			surface = Float.parseFloat(champ_volume.getText());
			tempsv = Integer.parseInt(champ_tempsv.getText());
			tempsh = Integer.parseInt(champ_tempsh.getText());
 
 
			//calculs "de base"
 
			poids = masse*pesanteur;
			pousseearchimede = massevolumique*volume*pesanteur;	
			textefin.setText(String.valueOf(poids));
 
			m_canvas1.repaint();
 
		}
 
		catch (NumberFormatException ex) {
			System.out.println("   Le nombre entrée n'est pas valide !");
			textefin.setText("   Erreur de saisie.");
		}
	}
  }
}