Mục tiêu của tôi là để đơn giản hóa mã này (tất cả hoạt động tốt):Phương pháp MouseAdapter - tại sao `mouseDragged`,` mouseMoved` và `mouseWheelMoved` được bao gồm?
package test;
import java.awt.Window;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JWindow;
public class A extends JWindow implements MouseListener, MouseMotionListener {
public A() {
addMouseListener(A.this);
addMouseMotionListener(A.this);
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
//This method is being used, working fine
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseDragged(MouseEvent e) {
//This method is being used, working fine
}
@Override
public void mouseMoved(MouseEvent e) {
}
}
Nhưng nếu tôi quyết định sử dụng MouseAdapter
như thế này:
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
transferFocusBackward();
//This method is being used, working fine
}
@Override
public void mouseDragged(MouseEvent e) {
//This method is being used, not working anymore
}
});
mouseDragged
nhận có sự kiện nào. Nhưng nếu tôi thêm MouseMotionListener
như sau:
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
//This method is being used, working fine
}
});
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
//This method is being used, working fine
}
});
Sau đó mọi thứ trở lại bình thường. Vì vậy, câu hỏi của tôi là - mục đích của các phương pháp mouseDragged
, mouseMoved
và mouseWheelMoved
trong lớp MouseAdapter
là gì nếu chúng không hoạt động?
Bạn phải thêm 'MouseAdapter' bằng cách sử dụng' addMouseMotionListener' nếu bạn muốn nó lắng nghe các sự kiện chuyển động của chuột. – Vulcan
Chờ ... cái gì? Tôi đã không nhận ra rằng họ đã thay đổi điều này trong Java 6, vì tôi vẫn bị mắc kẹt bằng cách sử dụng Java 5, nơi 'MouseAdapter' * chỉ * triển khai' MouseListener'. Điều tiếp theo bạn sẽ nói với tôi là họ đã cải thiện 'SwingWorker'. Ha, đúng rồi. – splungebob