Tôi có một textField trong ứng dụng của tôi sẽ được khởi tạo theo chương trình (textField.setText()) khi người dùng nhấp vào một mục trong JList. người dùng sau sẽ thay đổi giá trị này theo cách thủ công. Tôi gặp khó khăn khi sử dụng trình nghe tài liệu để phát hiện các thay đổi trong trường văn bản này. Khi các thay đổi xảy ra theo chương trình, nó không phải làm gì ngoài việc xảy ra theo cách thủ công, nó sẽ thay đổi màu nền thành màu đỏ.Làm thế nào để tạo sự khác biệt giữa textField.setText() và thêm văn bản vào textField bằng tay trong java?
Cách phát hiện xem textField đã được điền thủ công hay bằng textField.setText()?
txtMode.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
if (!mode.equals(e.getDocument()))
txtMode.setBackground(Color.red);
}
public void removeUpdate(DocumentEvent e) {
if (mode.equals(e.getDocument()))
txtMode.setBackground(Color.white);
}
public void changedUpdate(DocumentEvent e) {
//To change body of implemented methods
}
});
Điểm bắt ở đây là đôi khi setText() được gọi bởi ai đó không phải là mã của riêng bạn. Đây là vấn đề tôi đang chiến đấu chống lại vào lúc này, dù sao đi nữa. Tôi ước họ có thể có một wasTriggeredByUser() trên mọi sự kiện. – Trejkaz
@Trejkaz xin vui lòng làm thế nào, ở đâu, tại sao, là có một số lý do đặc biệt, btw Tài liệu là mô hình cho JTextComponents, sau đó tiêu thụ/bắn tất cả các thay đổi/sự kiện mô hình betweens để xem và ngược lại – mKorbel