Java 未识别Mousedragged
有人能告诉我为什么mousedragged在下面的代码中不能被识别,并可能帮助我解决这个问题吗Java 未识别Mousedragged,java,swing,focus,jpanel,mousemotionevent,Java,Swing,Focus,Jpanel,Mousemotionevent,有人能告诉我为什么mousedragged在下面的代码中不能被识别,并可能帮助我解决这个问题吗 public class Hello extends JPanel implements KeyListener, MouseListener, MouseMotionListener{ JPanel panel = new JPanel(); JFrame frame = new JFrame(); public Hello() { addKeyListene
public class Hello extends JPanel implements KeyListener, MouseListener, MouseMotionListener{
JPanel panel = new JPanel();
JFrame frame = new JFrame();
public Hello() {
addKeyListener(this);
addMouseListener(this);
addMouseMotionListener(this);
panel.addKeyListener(this);
panel.addMouseListener(this);
frame.addKeyListener(this);
frame.addMouseListener(this);
}
public static void main(String [] args){
Hello play = new Hello();
play.setPanel();
}
public void setPanel(){
panel.setLayout(null);
frame.add(panel);
frame.setLayout(null);
panel.setBounds(0,0,100,100);
frame.setVisible(true);
panel.setVisible(true);
panel.setFocusable(true);
frame.setSize(100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void keyTyped(KeyEvent arg0){
System.out.println("keytyped");
}
public void keyPressed(KeyEvent arg0){
System.out.print("keypressed");
}
public void keyReleased(KeyEvent arg0){
System.out.println("keyreleased");
}
public void mousePressed(MouseEvent arg0){
System.out.println("mousepressed");
}
public void mouseReleased(MouseEvent arg0){
System.out.println("mousereleased");
}
public void mouseClicked(MouseEvent arg0){
System.out.println("mouseclicked");
}
public void mouseEntered(MouseEvent arg0){
System.out.println("mousenentered");
}
public void mouseExited(MouseEvent arg0){
System.out.println("mouseexited");
}
public void mouseDragged(MouseEvent arg0){
System.out.println("mousedragged");
}
面板具有焦点,因此您需要将MouseMotionListener添加到面板。您将MouseMotionListener设置为类的面板,但该面板未处于焦点
panel.addKeyListener(this);
panel.addMouseListener(this);
frame.addKeyListener(this);
frame.addMouseListener(this);
在这里,您为框架和面板提供了键和鼠标侦听器。然后在代码中进一步向下,将frame和panel设置为visible。唯一剩下的带有MouseMOTIONListener的面板是“不可见结构”面板
panel.addKeyListener(this);
panel.addMouseListener(this);
panel.addMouseMotionListener(this);
frame.addKeyListener(this);
frame.addMouseListener(this);
frame.addMouseMotionListener(this);
试一试,看看它能把你引向何方。我已经很长时间没有使用swing了,但我认为这可能会有所帮助。您能否解决您的问题,以便我们可以在正确的代码文本中看到类声明和构造函数?-1,前面给出了相同的答案。没有必要在论坛上重复回答。此外,由于事件由panels listener处理,因此无需将MouseMotionListener添加到框架中。