2011-11-20 56 views
0

我有一個快速的問題給你們,好吧,快給你吧,對我來說不快。比較一個Arc2D和一個組件

我有一個充滿的Arc2D形狀的數組,我有一個MouseAdapter

內的mousePressed事件,我需要在點擊的Arc2D用的Arc2D的,甚至更好的陣列相比,全自動識別的Arc2D是點擊,然後可以從那裏工作的(改變顏色,更specificly)

我想這

private class MyMouseAdapter extends MouseAdapter { 
    public void mousePressed(MouseEvent e) { 
     Point p = e.getPoint(); 
     Component c = gamePanel.getComponentAt(p); 

     if(c == arcs[0]) { 
      System.out.println("test"); 
     } 
    } 
} 

當然,這並不工作,但我真的不知道該怎麼辦

非常感謝!

編輯:

看第一個回答我就到這裏後,我試圖更改代碼以這種

private class MyMouseAdapter extends MouseAdapter { 
    public void mousePressed(MouseEvent e) { 
     Point p = e.getPoint(); 

     if(arcs[0].contains(p)) { 
      System.out.println("test"); 
     } 
    } 
} 
當然這是行不通的,因爲

圓弧陣列只包含即在這種方法後來描繪的圓弧

@Override 
protected void paintComponent(Graphics graph) { 
    super.paintComponent(graph); 
    Graphics2D g = (Graphics2D) graph; 
    // smooth graphics 
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 

    // moving to the middle of the panel 
    g.translate(this.getWidth()/2, this.getHeight()/2); 

    // painting colored arcs 
    for(int i = 0; i < 4; i++) { 
     g.setColor(dimColors[i]); 
     g.fill(arcs[i]);    
    } 

    // painting borders 
    g.setColor(Color.BLACK); 
    g.setStroke(new BasicStroke(5F)); 
    g.drawLine(-98, 0, 98, 0); 
    g.drawLine(0, -98, 0, 98);  
    g.draw(circle);  

    // painting central white circle 
    g.setColor(Color.WHITE); 
    g.fill(smallCircle);   
    g.setColor(Color.BLACK); 
    g.draw(smallCircle);  

} 

我完全被卡住傢伙

+1

*「我對你們..一個簡單的問題」 *不幸的是我對你唯一的答案並不快,所以..never頭腦。 –

回答

0

這裏,這可能讓你開始...

private class MyMouseAdapter extends MouseAdapter { 
    public void mousePressed(MouseEvent e) { 
     Point click = e.getPoint(); 
     //this next loop may seem hacky 
     for (Arc2D c: arcs) { 
      if (c.getX() == click.getX() && c.getY() == click.getY()) { 
       System.out.println("The arc at (" + c.getX() + ", " + c.getY() + ") was clicked."); 
       return; 
      } 
     } 
     System.out.println("No arcs were clicked."); 
    } 
} 
+0

對不起,但這給我一個類型不匹配(組件和Arc2D)同樣的問題,我開始工作 謝謝反正! – zeta