Newsgroup: it.comp.java
Titolo: Applet Java non funziona

Salve a tutto il newsgroup, sono nuovo.
Sono abbastanza niubbo, e sto iniziando a studiare java da poco.
Per esercizio, ho scritto questa piccola applet che dovrebbe
convertire da gradi celsius a gradi farenheit  (posto il codice) :
/* ----     inizion codice   ---- */
import java.applet.Applet ;
import java.awt.*;
import java.awt.event.*;
public class appletConverter extends Applet {
	private static final long serialVersionUID = 8762510231023770992L ;
	Label inputLabel ;
	TextField inputText ;
	Label outputLabel ;
	TextField outputText ;
	Button convertButton ;
	public void init() {
		setLayout( new FlowLayout() ) ;
		inputLabel = new Label("Valore in gradi centigradi: ") ;
		// inputLabel.setBounds(5, 15, 80, 20) ;
		inputLabel.setLocation(20, 40) ;
		inputText = new TextField(10) ;
		inputText.setLocation(20 , 60) ;
		outputLabel = new Label("Valore in gradi Farenheit: ") ;
		outputLabel.setLocation(20, 80) ;
		outputText = new TextField(10) ;
		outputText.setLocation(20 , 100) ;
		convertButton = new Button("Converti!!!") ;
		convertButton.setLocation(20 , 120) ;
		add(inputLabel) ;
		add(inputText) ;
		add(outputLabel) ;
		add(outputText) ;
		add(convertButton) ;
		final ActionListener al = new ActionListener() {
			public void actionPerformed(ActionEvent evento) {
				Object source = evento.getSource() ;
				if ( source == convertButton) {
					Convert() ;
				}
			}
		} ;
		convertButton.addActionListener(al) ;
	}
	void Convert() {
		double centVal = Double.parseDouble(inputText.getText()) ;
		double farVal = ( (centVal * 1.8 ) + 32.0 ) ;
		outputText.setText( Double.toString(farVal) ) ;
		//this.stop() ;
		//this.start() ;
		repaint() ;
	}
	public void paint(final Graphics g) {
            this.init() ;
            //this.start() ;
	}
}
/* ---- fine codice ---- */
qui la pagina html nella quale ho embeddato l'applet:
<!-- inizio codice --->
<html>
	<head>
		<title>
			Convertitore ;
		</title>
	</head>
	<body>
		<applet code="appletConverter.class" witdh="300"
height="250"></applet>
	</body>
</html>
<!-- fine codice --->
il codice compila, le grafica parte, i bottoni stanno dove dovrebbero.
il problema è che una volta caricata la pagina contenente l'applet,
dopo aver immesso i dati e premuto il bottone, non succede niente.
Qualcuno sa darmi una mano ?
Grazie,
Emanuele

 Qualcuno sa darmi una mano ?
I problemi sono diversi:
1) l'ActionListener non viene associato al Button. Magari sarebbe meglio:
	convertButton.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			...
		}
	});
2) Non tieni conto di eventuali NumberFormatException lanciate da
Double.parseDouble()
3) Fare questo:
public void paint(final Graphics g) {
	this.init();
}
Significa che, quando avrai risolto l'ActionListener, una chiamata a
paint() sovrascrive con nuovi componenti TextField e Label quelli già
presenti, esattamente sopra, per virtù di Component.setLocation()
Nel veccio outputText c'è il risultato, ma un nuovo TextField gli viene
messo *sopra*.
Quindi anche se convert() funziona, non vedresti il risultato.
Va meglio se usi this.repaint() anziché this.init().
Ma per farla breve, *NON* hai bisogno di sovrascrivere Applet.paint(), non
complicarti la vita, basta mettere TextField.setText() dentro
l'ActionListener
4) I nomi delle Classi in Maiuscolo
5) I nomi dei metodi in minuscolo.
6) Tutto quanto detto si scopre in due secondi con l'uso di un *debugger*
7) Chiedere su internet come risolvere il tuo esercizio per l'università,
forse farà di te un ingegnere, ma non un buon programmatore :)
ciao
gl


Sono d'accordo!
Comunque... faccio il primo superiore :P
[non che questa sia una giustificazione].
Grazie mille,
Emanuele

 [non che questa sia una giustificazione].
Beh, allora complimenti... al professore! :)
Almeno vi fa fare qualcosa di utile.
Ai miei tempi, il corso di informatica era "allegato" a fisica, e
consisteva nell'uso di Lotus 123 per riportare i valori rilevati negli
esperimenti di laboratorio in tabelle e grafici.
Che pacco.
ciao
gl


Da noi, all' industriale dove vado io non è tanto diverso.
Noi quando facciamo inform... ops, laboratorio di matematica non
usiamo altro che Derive 5 e/o Cabrì Geomètrè.
Teoricamente dovremma anche fare pascal, ma per forza di cose (una
classe di teste calde... XD) non abbiamo fatto niente di tutto ciò.
Non che questo mi dispiaccia.. Pascal non mi è mai piaciuto come
linguaggio. XD
Io ho studiato informatica per fatti miei: ho abbandonato windows,
adesso sono un felice utente Ubuntu (sul portatile nuovo) e Slackware
(sul pentium 166). Conosco Python, html e attualmente sto studiando
Java.
Daltronde... se aspetto di fare certe cose a scuola, probabilmente
dovrei aspettare troppo!
A scuola si fa poco.
Quindi faccio io per fatti miei (non devo manco preoccuparmi dei voti
XD).
Emanuele

Grazie adesso va che è una meraviglia!!!
Emanuele