Tôi có một JTable với JLabel[][]
làm dữ liệu. Bây giờ tôi muốn phát hiện một nhấp đúp chuột vào JLabel hoặc một ô bảng (nhưng chỉ ở một trong các cột). Làm thế nào tôi có thể thêm một hành động/MouseListener trên tế bào bảng tương ứng JLabel?ActionListener trên JLabel hoặc ô JTable
Trả lời
Làm thế nào về:
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
// do some action if appropriate column
}
}
});
nếu tôi có mà Jlabel bên trong tế bào bảng sau đó làm thế nào tôi sẽ gọi rằng sự kiện nhấp chuột trên nhấp chuột? – Krishna
như bên dưới nhận xét @Camickr, tôi nghĩ tốt hơn nên sử dụng phương pháp MousePressed không phải MouseClick –
Về cơ bản các đề nghị tương tự như một trong những đã được chấp nhận trừ:
a) bạn nên xử lý mousePressed, không mouseClicked. Sự kiện mouseClicked chỉ được kích hoạt khi một sự kiện mousePressed và mouseReleased được tạo ra tại cùng một vị trí pixel. Bạn nếu người dùng di chuyển chuột ngay cả 1 pixel trong khi nhấp đúp bạn sẽ không nhận được nhấp đúp mong đợi.
b) Ngoài ra, bạn có thể muốn xem xét sử dụng các phương thức columnAtPoint() và rowAtPoint() để lấy ô được nhấp. Mặc dù nó có thể không tạo sự khác biệt trong trường hợp này, nó sẽ là vấn đề nếu bạn đã từng sử dụng một MouseListener cho các nhấp chuột phải, vì vùng chọn không bị thay đổi. Vì vậy, nếu bạn có thói quen sử dụng phương pháp này, bạn sẽ không gặp vấn đề gì trong tương lai.
JLabels haven´t ActionListeners, nhưng có MouseListener, thêm chúng và nghe trên mouseClick – Telcontar