Tôi đang cố gắng tạo một chương trình có thể chuyển đổi fahrenheit thành celcius bằng java. Trong chương trình tôi có 2 nhãn và 1 TextField cho đầu vào. Tôi muốn tạo nhiệt độ chuyển đổi khi người dùng nhập nhiệt độ và nhấn Nhập. Để làm điều đó, tôi đã thêm một người nghe chính vào trường văn bản của tôi nhưng nó không hoạt động. Khi tôi bấm Nhập người nghe không hề bắn.KeyListener trong Textfield không kích hoạt khi nhấn enter
Và đây là mã của tôi.
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: Nó hoạt động với ActionListener nhưng tôi cần phải làm điều đó với lớp nặc danh. Không có lớp ẩn danh, nó sẽ cháy với Nhập.
Sự kiện này được được tiêu thụ cao hơn trong chuỗi sự kiện, do đó nó không bao giờ tới bạn, tốt hơn để sử dụng [Key Bindings] (http://docs.oracle .com/javase/tutorial/uiswing/misc/keybinding.html) - Thực ra, tốt hơn nên sử dụng 'ActionListener' cho những gì bạn đang cố gắng làm - đó là những gì nó được thiết kế cho - hãy nhớ rằng, [Enter] không phải lúc nào cũng là" chấp nhận "chìa khóa cho mọi nền tảng;) – MadProgrammer
Tôi đã cố gắng sử dụng trình nghe hành động. Mọi thứ diễn ra tốt đẹp đến mức tôi không thể tìm cách kiểm tra xem phím enter có được nhấn hay không trong ActionListener. – Miral
Có quan trọng không? Từ quan điểm độc lập nền tảng, 'ActionListener' sẽ được kích hoạt khi người dùng kích hoạt hành động" chấp nhận "cho nền tảng đó. Nó chỉ xảy ra với hầu hết các nền tảng, đó là phím [Enter]. – MadProgrammer