Hôm nay có thằng bạn đưa ra một vền đề về sự kiện(event) itemStateChanged là tại sao khi sự kiện này được thực thi thì câu lệnh trong nó được gọi tới 2 lần.
Hờ hờ hên sao lỗi này mình từng bị dính trước đây rùi, thật sự nó cũng không phải lỗi mà là do ta chưa hiểu rõ về sự kiện itemStateChanged thôi. Nhớ hồi đó tìm nguyên nhân cũng muốn mòn con mắt TT^TT.
Bài viết này sẽ chia sẻ vấn đề về sự kiện itemStateChanged và cách xử lý nó. Đầu tiên ta sẽ thực hiện một demo project trên Netbeans để mô tả vấn đề này.
Đầu tiên tạ tạo một JFrame có một jCombobox giống như hình bên dưới:
Kế tiếp tạ tạo sự kiện itemStateChanged cho jCombobox bằng cách click chuột phải vào combobox chọn "Events" → "Item" → "itemStateChanged"
Trong code của sự kiển ta thêm vào dòng lệnh sau:
System.out.println("Hello - Good morning - How are you?");
Bây giờ ta tiến hành Build & Run project và thực hiện sự hiển thay đổi item trong combobox thì sẽ thấy câu lện "System.out.println("Hello - Good morning - How are you?"); " được thực hiện 2 lần như hình bên dưới.
Lý do nó chạy 2 lần vì trong định nghĩa sự kiện itemStateChanged của Java là 2 sự kiện chọn hoặc bỏ chọn (selected or deselected) và tất nhiên điều kiện tiên quyết là giá trị của item phải được thay đổi.
Cách gải thích của mình có thể hơi khó hiểu bạn nào vững tiếng anh thì vào trang docs.oracle.com
để tìm hiểu cho rõ hơn nha.
Và để giải quyết vấn đề này đơn giản nhất là ta sử dụng sự kiện khác được tốt nhất là dùng jComboBox1ActionPerformed cho dễ ^^!
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
}
{
// TODO add your handling code here:
}
Mong được sự đóng góp ý kiến của ACE gần xa.
No comments:
Post a Comment