Ciao, ho a disposizione due classi distinte (ciascuna in nel proprio file .java):
codice:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class AppletTemperatura extends JApplet {
private JPanel pannello;
private JLabel etichetta;
private JTextField campo;
private JComboBox combo;
private JButton pulsante;
private static JLabel risultato;
public void init() {
pannello = new JPanel();
etichetta = new JLabel("Inserisci la temperatura qui accanto: ");
campo = new JTextField(10);
campo.setHorizontalAlignment(JTextField.RIGHT);
combo = new JComboBox();
combo.setEditable(false);
combo.addItem("Celsius in Kelvin");
combo.addItem("Celsius in Fahrenheit");
combo.addItem("Kelvin in Celsius");
combo.addItem("Kelvin in Fahrenheit");
combo.addItem("Fahrenheit in Celsius");
combo.addItem("Fahrenheit in Kelvin");
pulsante = new JButton("Converti");
risultato = new JLabel("Risultato: ");
pannello.add(etichetta);
pannello.add(campo);
pannello.add(combo);
pannello.add(pulsante);
pannello.add(risultato);
this.setContentPane(pannello);
pulsante.addMouseListener(new Ascoltatore(campo, combo, risultato));
}
public static void aggiornaRisultato(JLabel risultatoPassato) {
risultato = risultatoPassato;
risultato.validate();
}
}
e questa classe che gestisce il JButton
codice:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Ascoltatore extends MouseAdapter {
private JTextField campo;
private JComboBox combo;
private JLabel risultatoEtichetta;
private double dato, risultato;
public Ascoltatore(JTextField campoPassato, JComboBox comboPassato, JLabel risultatoPassato) {
campo = campoPassato;
combo = comboPassato;
risultatoEtichetta = risultatoPassato;
}
public void mouseClicked(MouseEvent oggettoEvento) {
try {
if((combo.getSelectedItem().toString()).equalsIgnoreCase("Celsius in Kelvin")==true) {
dato = Double.parseDouble(campo.getSelectedText());
risultato = ConversioneTemperatura.celsiusInKelvin(dato);
risultatoEtichetta.setText("Risultato: " + risultato);
AppletTemperatura.aggiornaRisultato(risultatoEtichetta);
}
} catch(Throwable e) {}
}
}
Il problema che una volta inserita la temperatura e cliccato sul pulsante, non si aggiorna la JLabel "Risultato". Navigando in rete ho trovato l'istruzione "validate()" ma sembra non fare niente. Come potrei fare? Grazie mille!!!!