2012-11-15 94 views
0

我有一個由多個類組成的Java程序。Java - 獲取觸發鼠標事件的按鈕名稱事件

現在,我製作了名爲的應用程序中的Java程序接口。我在那裏定義了幾個按鈕。

這是我如何添加鼠標監聽器的按鈕在應用類:

我有一個名爲DrawingCanvas另一個類,它包含,除其他外,一些鼠標事件處理的。其中一個事件處理程序是mousePressed。這裏是中的mousePressed代碼:

的mousePressed用的問題是,它不能識別該按鈕的名稱,如「Button_Square」,「Button_Rectangle」等,這是因爲這些按鈕都在應用類被聲明和不是DrawingCanvas類。

如何獲取觸發鼠標事件的按鈕的名稱?不要忘記,聲明按鈕的類與實現mouselisteners和mousemotionlistener的類不同。謝謝:)

+1

剛剛創建了8個DrawingCanvas嗎? – dashrb

+0

Erm ..我知道我可能在添加鼠標偵聽器和鼠標移動偵聽器時出錯。我如何將mouselistener添加到組件中?所有這些監聽器都在DrawingCanvas類中。 – Matthew

+0

您應該爲每個按鈕編寫一個調度程序類,然後調用DrawingCanvas類上的方法。 – XORcist

回答

1

只要你打算創建8個不同的監聽器,用JButton來區分它們。

Button_Square.addMouseListener(new DrawingCanvas(Button_Square)); 
Button_Square.addMouseMotionListener(new DrawingCanvas(Button_Square)); 

Button_Rectangle.addMouseListener(new DrawingCanvas(Button_Rectangle)); 
Button_Rectangle.addMouseMotionListener(new DrawingCanvas(Button_Rectangle)); 

Button_Circle.addMouseListener(new DrawingCanvas(Button_Circle)); 
Button_Circle.addMouseMotionListener(new DrawingCanvas(Button_Circle)); 

Button_Triangle.addMouseListener(new DrawingCanvas(Button_Triangle)); 
Button_Triangle.addMouseMotionListener(new DrawingCanvas(Button_Triangle)); 
2

那麼首先,您可以製作一個DrawingCanvas並在應用程序類中創建一個字段;這裏我打算叫它canvas。現在,如果你所有的按鈕做不同的事情,你可以給他們所有不同MouseListeners:

Button_Rectangle.addMouseListener(new MouseListener() 
{ 
    public void mousePressed(MouseEvent e) 
    { 
      if(!e.isControlDown()) 
      { 
       canvas.Shapes.add(new Rectangle(e.getX(), e.getY())); 
      } 
    } 
    //handle other events, or don't directly implement MouseListener 

}); 

Buuton_Circle.addMouseListener(new MouseListener() 
{ 
    public void mousePressed(MouseEvent e) 
    { 
      if(!e.isControlDown()) 
      { 
       canvas.Shapes.add(new Circle(e.getX(), e.getY())); 
      } 
    } 
    //handle other events, or don't directly implement MouseListener 

}); 

等等...

省去了通過使用不同的對象來確定源。