2013-10-28 136 views
0

在下面的程序中,只要鼠標點擊面板或框架,形狀的顏色就會改變。但是我只想在鼠標點擊那個形狀的時候改變顏色。有沒有辦法做到這一點,而不使用位置?Java:在鼠標點擊時改變形狀的顏色

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Colorchange extends JFrame { 

    public Colorchange() { 
     setTitle("Change Color on click"); 
     setSize(500,500); 
     MyPanel pane=new MyPanel(); 
     add(pane); 
    } 

    public static void main(String[] args) { 
     Colorchange ob=new Colorchange(); 
     ob.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     ob.setVisible(true); 
    } 
} 

class MyPanel extends JPanel { 
    int x=200,y=200,r=50; 
    Color co=Color.RED; 

    public MyPanel() { 
     addMouseListener(new MouseAdapter() { 
      public void mouseClicked(MouseEvent me) { 
       co=Color.YELLOW; 
       repaint(); 
      } 
     }); 
    } 

    public void paintComponent(Graphics g) { 
     g.setColor(co); 
     g.fillOval(x-r, y-r, 2*r, 2*r); 
    } 
} 
+0

什麼是你的問題? – Christian

+0

我想改變一個形狀的顏色,如果鼠標點擊它 – rajagopalx

回答

0

只需選中X,光標的y位置之前重繪

//... 
public MyPanel() { 
    addMouseListener(new MouseAdapter() { 
     public void mouseClicked(MouseEvent me) { 
      if(me.getX() >= (x-r) && me.getX() < (x+r) && me.getY() >= (y-r) && me.getY() < (y+r)) { 
       co=Color.YELLOW; 
       repaint(); 
      } 
     } 
    }); 
} 
//... 
+0

非常感謝你.. – rajagopalx

+0

不要擔心(但upvoting是apreciated;))另外,您可以使用Rectangle類簡化和推廣代碼,並且該方法包含(x,y) – polypiel

+0

抱歉,我僅在昨天加入。我沒有15的聲望upvoting爲你。 – rajagopalx

1

您需要創建該形狀的對象。 將位置添加到對象。 OnMouseClick,檢查鼠標位置是否等於形狀位置。

祝你好運。

+0

謝謝。我會嘗試。有沒有其他方式沒有使用位置? – rajagopalx

+0

據我所知並不如此。 –

+0

@Rajagopal是的,但要坦率地說,當API已經存在時,爲什麼還要重新發明輪子,這不僅會實現鼠標點擊檢測,而且還可以繪製形狀。 – MadProgrammer