01/10/2018, 09:35

Bắt sự kiện click vào 1 dòng của jTable

Mình có 1 JFrame chứa 1 jTale để hiển thị các thông tin của Client (với các cột ID, tên, địa chỉ), bây giờ mình bắt sự kiện click vào từng dòng của jTable. khi click vào 1 dòng của jTable thì sẽ chuyển sang một JFrame mới, đóng JFrame hiện tại. Đây là code của mình

 tblClient.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
                @Override
                public void valueChanged(ListSelectionEvent e) {
                    // chuyển sang JFrame mới
                    MyJFrame myJFrame = new MyJFrame ();
                    myJFrame .setVisible(true);

                   // đóng JFrame hiện tại
                    setVisible(false);
                   
                }
            });

Nhưng mình gặp phải vấn đến là, khi click vào 1 dòng của jTable, thì chương trình lại hiện ra những 2 cửa sổ của JFrame mới.
m.n sửa giúp mình lỗi này với, hay do mình bắt sự kiện click vào dòng của jTable sai nhỉ

Vesper Link viết 11:47 ngày 01/10/2018

Bạn thêm control flow if sau vào đầu tiên của method:

public void valueChanged(ListSelectionEvent e) {
     if (e.getValueIsAdjusting()) {
        return;
     }

     // Continue coding ...
}


Explaination: Bởi vì khi bạn click vào 1 row thì nó sẽ là một chuổi của 2 sự kiện MousePressed và MouseRealesed nên method valueChanged() thực hiện 2 lần do đó nó hiện lên 2 cửa sổ.

bongtoi viết 11:44 ngày 01/10/2018

Cảm ơn b nhé, đã làm theo và đc rồi

Bài liên quan
0