2011-11-20 55 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