2016-07-01 40 views
-1

我編寫下面的代碼,並想在另一個類中調用mousepress方法,但是我得到錯誤來爲我調用它的位置定義參數mouseevent,但是當我定義變量mouseevent e時,出現NullPointerException錯誤。如何在另一個類中調用帶有參數鼠標事件e的方法?

請幫幫我。

public void mousePressed(MouseEvent e , int tankid) { 
    System.out.println("insert which tanks you want to move"); 
     JButton clicked = (JButton)e.getSource(); 
     System.out.println(clicked.getAlignmentX()+"mmmmmmmmmmm"); 
     for(int x = 0; x<board.r; x++) 
     { 
      for(int y = 0;y<board.cc;y++) 
      { 
       if(clicked == board.squares[x][y]) 
       { 

          ImageIcon icon = new ImageIcon("C:/Users/win_10/Desktop/tanks/tank1.png"); 
          board.squares[troops[tankid].getPosition().x][troops[tankid].getPosition().y].setIcon(null); 
          board.squares[x][y].setIcon(icon); 
          map.mapboard[troops[tankid].getPosition().x][troops[tankid].getPosition().y].setBackground(null); 
          troops[i].getPosition().x = x; 
          troops[i].getPosition().x = y; 
          map.mapboard[troops[tankid].getPosition().x][troops[tankid].getPosition().x].add(new JLabel(name)); 
          SwingUtilities.updateComponentTreeUI(map.getContentPane()); 
        System.out.println(x + " "+ y); 
       } 
      } 
     } 
    } 
+1

我可能會誤解你的語言,但我認爲_listener_應該調用鼠標單擊處理程序方法,而不是直接調用。 –

+1

取決於你需要多少幫助,你可能會考慮改善這個問題。首先解釋你想要做什麼*和**爲什麼***,然後考慮創建併發佈一個有效的[mcve],一個小而完整的程序,只有必要的代碼來演示你的問題,我們可以複製,粘貼,編譯和運行而不需要修改。 。請注意,這是以代碼格式發佈的代碼,而不是作爲非現場資源的鏈接。 –

+1

此外,請通過[旅遊],[幫助]和[如何提出一個很好的問題](http://stackoverflow.com/help/how-to-ask)部分來了解該網站的工作原理和幫助您改善當前和未來的問題,這可以幫助您獲得更好的答案。 –

回答

-1

這是一個簡短的演示,可以幫助您開始。 基本上你創建需要鼠標點擊(武)迴應類的監聽器,並把它添加到組件中產生的鼠標事件類:

import java.awt.Dimension; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 

public class Foo extends JFrame { 

    private JButton btn; 

    Foo(){ 

     super("Foo frame"); 
     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     setPreferredSize(new Dimension(200,100)); 
     setLocationRelativeTo(null); 

     btn = new JButton("Click Me"); 
     getContentPane().add(btn); 

     validate(); 
     pack(); 
    } 

    JButton getBtn() { 
     return btn; 
    } 

    public static void main(String[] args) { 

     Foo foo = new Foo(); 
     Moo moo = new Moo(); 
     foo.getBtn().addMouseListener(moo.getMouseListener()); 
     foo.setVisible(true); 
    } 
} 

class Moo { 

    Moo() {} 

    MouseListener getMouseListener() { 

     return new MouseAdapter() { 

      @Override 
      public void mousePressed(MouseEvent e) { 

       System.out.println("Mouse pressed ! "); 
      } 
     }; 
    } 
} 

如果你需要進一步澄清不猶豫不決。

+0

謝謝我了:) – user3679182

相關問題