0

次のコードで mousedragged が認識されない理由を教えてください。この問題を解決するのに役立つ可能性がありますか?

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");
    }
4

2 に答える 2

0

クラスのパネルに MouseMotionListener を設定しましたが、そのパネルにフォーカスがありません。

    panel.addKeyListener(this);
    panel.addMouseListener(this);
    frame.addKeyListener(this);
    frame.addMouseListener(this);

ここでは、フレームとパネルにキーとマウスのリスナーを与えました。次に、コードのさらに下で、フレームとパネルを表示に設定します。MouseMOTIONListener が残っている唯一のパネルは、非表示の構造パネルです。

    panel.addKeyListener(this);
    panel.addMouseListener(this);
    panel.addMouseMotionListener(this);
    frame.addKeyListener(this);
    frame.addMouseListener(this);
    frame.addMouseMotionListener(this);

それを試して、どこに到達するかを確認してください。私は長い間スイングを扱っていませんが、それが役立つと思います。

于 2013-06-01T20:21:40.473 に答える
0

パネルにフォーカスがあるため、MouseMotionListener をパネルに追加する必要があります。

于 2013-06-01T20:12:36.137 に答える