2013-11-15 29 views
1

我想讓這個程序爲我的世界,現在我只是開始。我希望如果你點擊一個標籤,它會檢查它是什麼標籤,並會做一些事情。如何使用MouseListener單擊JLabel?

addMouseListener(new MouseAdapter() { 
      public void mousePressed(MouseEvent me) { 

      System.out.println(me.getX()+", "+me.getY()+"."); 
      Object source = me.getSource(); 
      int intx = me.getX(); 
      int inty = me.getY(); 

      if(me.getX()>=1 && me.getY()>=1 && me.getX()<=70 && me.getY()<=45){ 
       permissionsframe.setLocation(810,250); 
       System.out.println(p1p.length); 
       permissionsframe.pack(); 
       permissionsframe.setSize(200, 200); 
       permissionsframe.setVisible(true); 
       JLabel playerperms = new JLabel("Player "+p1s+" has "+p1p.length+" permissions."); 
       playerperms.setBounds(1, 1, 150, 150); 
       permissionsframe.add(playerperms); 
       System.out.println("You chose "+player1.getText()+"."); 
      } 
      else{ 
       System.out.println("You did not click any label."); 
      } 

     } 
    }); 

此選擇區域適合我現在的名稱 - NonameSL。但如果名稱會更長或更短,選擇區域將明顯不同...

有沒有辦法獲得excact標籤?我試過if(source.equals(player1))(玩家1是標籤),但是我把標籤放在1,1中,我必須點擊我定義標籤的excact點,X = 1,Y = 1。我怎樣才能讓鼠標聽者聽一個標籤?

回答

1

沒有必要檢查鼠標座標是否在JLabel中。 可以監聽器的過程中,點擊/新聞發佈會在MyMouseListener.class

綁定到每一個JLabel要做到這一點:

你必須給的MouseListener添加到每個JLabel的:

MyMouseListener myMouseListener = new MyMouseListener(); 

label01.setName("name01"); 
label01.addMouseListener(myMouseListener); 

label02.setName("name02"); 
label02.addMouseListener(myMouseListener); 

要確定JLabel你可以這樣做:

class MyMouseListener extends MouseAdapter { 

    @Override 
    public void mouseClicked(MouseEvent e) { 
     JLabel l = (JLabel) e.getSource(); 

     if(l.getName().equals("name01")) 
      doSomething01(); 
     else if(l.getName().equals("name02")) 
      doSomething02(); 
    } 
} 
+0

那麼這是行不通的。我的代碼是:http://pastebin.com/h9zAD2Df當我運行代碼時,它等待幾秒鐘,然後出現這個錯誤:(它對於stackoverflow來說太長了,這裏是pastebin):http:// pastebin.com/CEq8KegY – NonameSL

+0

試試這個:http://pastebin.com/w0RpRiu1 – Delpes

+0

如果你想這樣做,最好使用命令模式來執行這些動作。 – GuyT