Sto provando a creare un programma che converta fahrenheit in celcius in java. Nel programma ho 2 etichette e 1 campo di testo per l'input. Voglio convertire la temperatura quando l'utente digita la temperatura e preme Immettere. Per fare ciò, ho aggiunto un ascoltatore chiave al mio campo di testo, ma non funziona. Quando si preme Immettere il listener non attivare affatto.KeyListener in Textfield non si attiva quando si preme Invio
Ed ecco il mio codice.
public class TempConv extends JFrame{
private JLabel info;
private JLabel result;
private JTextField input;
private String outcome;
public TempConv(){
super("Temperature Converter");
setLayout(new BorderLayout());
info = new JLabel("Enter Fahrenheit Temperature");
add(info, BorderLayout.NORTH);
input = new JTextField(12);
add(input, BorderLayout.CENTER);
result = new JLabel("Temperature in Celcius is: " + outcome);
add(result, BorderLayout.SOUTH);
input.addKeyListener(
new KeyListener(){
public void keyPressed(KeyEvent e){
if(e.getKeyChar() == KeyEvent.VK_ENTER){
outcome = input.getText();
}
}
}
);
}
public static void main(String[] args) {
TempConv ftc = new TempConv();
ftc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ftc.setLocationRelativeTo(null);
ftc.setSize(370, 100);
ftc.setVisible(true);
}
}
Edit: Funziona con ActionListener ma ho bisogno di farlo con classe anonima. Senza classe anonima spara con Inserisci.
L'evento è stato consumato più in alto nella catena di eventi, quindi è mai raggiungendo, meglio usare [combinazioni di tasti] (http://docs.oracle .com/javase/tutorial/uiswing/misc/keybinding.html) - In realtà, è meglio usare un 'ActionListener' per quello che stai cercando di fare - questo è quello per cui è stato progettato - ricorda, [Invio] non è sempre il" accetta "chiave per ogni piattaforma;) – MadProgrammer
Sono stato tentato di utilizzare il listener di azioni. Tutto è andato così bene fino a quando non riesco a trovare come controllare se il tasto di invio viene premuto o meno in ActionListener. – Miral
Ha importanza? Da un punto di vista indipendente dalla piattaforma, l'ActionListener verrà attivato quando l'utente attiva l'azione "accetta" per quella piattaforma. Succede solo che per la maggior parte delle piattaforme, è il tasto [Invio]. – MadProgrammer