đã thử một vài cách tiếp cận khác nhau nhưng không thành công. Chỉ cần tự hỏi nếu tôi đang thiếu bất cứ điều gì. Tôi có một JSpinner là một thành phần của một widget DateSelector cùng với một Calendar. Tôi đang cố gắng kích hoạt phương thức xác thực nếu người dùng thay đổi bất kỳ văn bản nào trong JSpinner thay vì sử dụng điều khiển Lịch hoặc mũi tên lên và xuống của JSpinner.Java KeyListener không kích hoạt trên JSpinner
Sau đây là các phương pháp khác nhau tôi đã cố gắng:
jSpinner1.addKeyListener(kl);
jSpinner1.getEditor().addKeyListener(kl);
((JSpinner.DefaultEditor) jSpinner1.getEditor().getTextField().addKeyListener(kl);
Bất cứ ai ngoài kia có bất kỳ ý tưởng như những gì tôi đang làm sai? Cảm ơn
CẬP NHẬT Xin lỗi, tôi nên nói rằng tôi đã thêm một ChangeListener vào JSpinnerDateModel được đính kèm với JSpinner. Cũng giống như vậy:
ChangeListener changeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
dateChanged();
}
};
jSpinnerDateModel.addChangeListener(changeListener);
KeyListener keyListener = new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyChar());
dateChanged();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
};
((JSpinner.DefaultEditor) jSpinner1.getEditor()).getTextField().addKeyListener(
keyListener);
Cảm ơn
Frank
Xin lỗi vì không bao gồm thông tin này trong câu hỏi ban đầu (tôi đã cập nhật nó ngay bây giờ) nhưng tôi đã có một ChangeListener gắn liền với Mô hình của JSpinner. Điều này bắt bất kỳ thay đổi nào được thực hiện cho giá trị trong JSpinner nhưng chỉ khi người dùng sử dụng các điều khiển JSpinner. Tôi đang cố gắng kích hoạt sự kiện nhấn phím của một KeyListener khi người dùng chỉnh sửa thủ công giá trị của JSpinner thông qua bàn phím. Cảm ơn – Frank
@Frank: Một ChangeListener sẽ kích hoạt bất cứ khi nào người dùng thay đổi giá trị * và tập trung đi * (hoặc nhấn Enter). Bạn nói đúng là nó sẽ không kích hoạt trong khi người dùng đang gõ. –
Vâng, đó là vấn đề tôi đang gặp phải. Đây là một phần của bảng điều khiển thuật sĩ và nếu người dùng chỉ cần chọn ngày và nhấp vào tiếp theo thì tiêu điểm sẽ không bị mất và phương thức xác thực sẽ bị trễ quá. Cảm ơn bạn đã nhập liệu của bạn. Có vẻ phức tạp hơn suy nghĩ đầu tiên. – Frank