javaで華氏をcelciusに変換できるプログラムを作成しようとしています。プログラムでは、入力用に2つのラベルと1つのTextFieldがあります。ユーザーが温度とプレスを入力すると変換温度を作りたいを入力してください。そのためには、テキストフィールドにキーリスナーを追加しましたが、動作しません。私がを押すと、リスナーを入力しても全く発砲しません。Enterキーを押したときにTextListのKeyListenerが起動しない
これは私のコードです。
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);
}
}
編集:それはのActionListenerで動作しますが、私は匿名クラスでそれを行う必要があります。匿名クラスなしではと入力してください。と入力してください。
イベントがイベントチェーン、したがって、それは使用する方、あなたに届くことはありません[キーバインディング](http://docs.oracleまで高い消費されています。実際には、あなたがやろうとしていることのために 'ActionListener'を使用する方が良いでしょう - それはそれが意図しているものです - [Enter]は必ずしも"すべてのプラットフォームでキーを受け入れる) – MadProgrammer
アクションリスナーを使用しようとしました。 ActionListenerでEnterキーが押されたかどうかを確認する方法が見つからない限り、すべてがうまくいった。 – Miral
それは問題ですか?プラットフォームに依存しない観点から、ユーザがそのプラットフォームに対して「受諾」アクションをトリガすると、「ActionListener」がトリガされる。ほとんどのプラットフォームで[Enter]キーが使用されています。 – MadProgrammer