2013-06-01 200 views
0

有人可以告訴我爲什麼mousedragged不被識別在下面的代碼,並可能幫助我解決這個問題?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"); 
    } 
+0

你能解決你的問題,所以我們可以在正確的代碼文本中看到類聲明和構造函數嗎? –

回答

0

面板具有焦點,所以您需要將MouseMotionListener添加到面板。

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); 

給一個鏡頭,看看它給你什麼。我很長一段時間沒有在擺動,但我認爲這可能會有所幫助。

+0

-1,前面給出了相同的答案。沒有必要混淆與重複的答案論壇。另外,由於事件由面板監聽器處理,所以不需要將MouseMotionListener添加到框架。 – camickr