KeyListener in Textfield nicht feuern, wenn Sie drücken Sie die EINGABETASTE

Ich versuche zu machen ein Programm, das die Umwandlung von fahrenheit zu Celsius in java. Im Programm habe ich 2 Labels und 1 Textfeld für die Eingabe. Ich möchte konvertieren Temperatur, wenn der Benutzer die Typen die Temperatur und drückt auf Enter. Um das zu tun, ich habe einen key-listener zu meinem textfield, aber es funktioniert nicht. Wenn ich drücken Sie die Taste Enter listener feuern nicht auf alle.

Und hier ist mein code.

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: funktioniert Es mit ActionListener aber ich muss es tun mit anonymen Klasse. Ohne anonyme Klasse feuert Sie mit Enter.

  • Die Veranstaltung ist verbraucht wurde weiter oben in der event-Kette, daher ist es nie, um Sie zu erreichen, besser zu Tastaturkürzel - Eigentlich ist es besser, eine ActionListener für das, was Sie versuchen zu tun - das ist, was es ist entworfen, für - denken Sie daran, Sie [Enter] ist nicht immer die "akzeptieren" - Taste für jede Plattform 😉
  • Ich war versucht, action-listener. Alles ging so gut, bis ich kann nicht herausfinden, wie um zu prüfen, ob Eingabe-Taste gedrückt wird oder nicht im ActionListener.
  • Spielt es eine Rolle? Von einer Plattform unabhängige Sicht, die ActionListener wird ausgelöst, wenn der Benutzer löst den "akzeptieren" - Aktion für die Plattform. Es passiert einfach so, dass für die meisten Plattformen, ist es die [Enter] - Taste.
  • In diesem Fall sollte das Programm nur ausführen, wenn der Benutzer drückt die Eingabe-Taste. Ich habe versucht, ActionListener, aber das führt mich zu KeyListener, das hört key-Aktionen. Bin ich falsch?
  • "Bin ich falsch?" Ja..und Nein. KeyListener ist auf niedrigem Niveau eine API für das, was Sie versuchen zu erreichen. Wenn Sie WIRKLICH wollen, überwachen Sie die [Enter] - Taste, dann sind Sie gehen zu müssen, ersetzen Sie die Tastenkombination beginnen, vom text-Feld. Dies wird sich jedoch ändern, wenn die Art und Weise, dass die Anwendung funktioniert möglicherweise auch auf anderen Plattformen, daher auch der Grund für die ActionListener. Dies ermöglicht das Aussehen und das Gefühl um zu entscheiden, unter welchen Bedingungen der ActionListener ausgelöst wird. Unter den meisten Plattformen, das ist der [Enter] - Taste...
  • Hmm.. ich bekomme Ihren Punkt. Ich werde mich darauf konzentrieren ActionListener dann.
  • Ok, ich fand eine Antwort in diesem Thema:link. Jetzt funktioniert es perfekt. Vielen Dank für die Ideen.

InformationsquelleAutor Miral | 2013-01-13
Schreibe einen Kommentar