Thắc mắc về event click trên table trong javaswing

e có 1 cái table “waterTable” và 1 cái button “buy” .Sở dĩ e gắn event vào table và button để khi click đồng thời vào 1 dòng table và button thì sẽ i++ ,nhưng mà khi click nhiều lần trên table thì i++ sẽ tăng nhiều lần mặc dù chỉ ấn 1 lần button , tại sao thế ạ ?. Mặc dù đã thêm if vào nhưng vẫn i++ nhiều lần theo click

Lưu ý:

Đăng mã bằng cách chép-dán dạng văn bản, không nên chụp hình.

Sai rồi bạn! Sai rất là to nữa.
Sao bạn có thể nhấn đồng thời 2 chỗ? Màn hình cảm ứng à? Hay dùng 2 con trỏ chuột? Hay chuột và bàn phím?
Nhưng dù bạn có thể nhấn 2 vị trí khác nhau cùng 1 lúc thì đoạn mã trên của bạn sai bét luôn.

Khi bạn nhấn 1 dòng trên bảng (waterTable) thì nút buy sẽ được thêm 1 bộ lắng nghe sự kiện (event listener) như trên (i++). Và cứ thế bạn nhấn 10 lần trên bảng thì sẽ có 10 bộ lắng nghe sự kiện được thêm vào buy. Sau đó bạn nhấn nút buy thì sẽ có 10 lần i++ xảy ra.

Bạn muốn chọn 1 món hàng sau đó mua, mà mỗi lần mua thì số lượng sẽ tăng lên 1? Thế thì chả liên quan gì đến bắt sự kiện ở bảng cả. Chỉ gán bắt sự kiện ở nút buy 1 lần, sau đó tăng số lượng dựa vào món đang được chọn là xong.

4 Likes

đúng là e còn nhiều thiếu sót thật :sweat_smile: cảm ơn a đã khai sáng, e chỉ dự định là khi click vào 1 món hàng trên table dc highlight rồi sau đó ấn buy để hiện lên thông báo rồi nhập số lượng vào

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?