0
当我右键单击Jframe时,出现此饼图。我想要的是当点击事件发生时计算每个饼图的角度。在Java中计算圆弧角度
Color[] c = {Color.BLACK, Color.RED, Color.BLUE, Color.YELLOW,
Color.GREEN, Color.CYAN, Color.MAGENTA, Color.PINK};
for(int i=0; i<8; ++i){
g.setColor(c[i]);
g.fillArc(x, y, w, h, i*45, 45);
}
这里是我曾尝试
public void mouseClicked(MouseEvent e)
{
PointerInfo a = MouseInfo.getPointerInfo();
Point d = a.getLocation();
x1 = (int)d.getX();
y1 = (int)d.getY();
int base=x1-CenterX;
int prep=CenterY-y1;
double tan=prep/base;
double angle=Math.atan(tan);
}
但calculted角度是不正确的。它有时会给我除以零例外。 这里是我的右键单击事件显示菜单。
public void mousePressed(MouseEvent e) {
if(e.isPopupTrigger())
{
CenterX=e.getX();
CenterY=e.getY();
try {
Thread.sleep(300L);
} catch (InterruptedException ex) {
Logger.getLogger(animate.class.getName()).log(Level.SEVERE, null, ex);
}
p.repaint();
}
}
@Override
public void mouseReleased(MouseEvent e) {
if(e.isPopupTrigger()){
s=e.getX();
as=e.getY();
p.mx=e.getX();
p.my=e.getY();
为了更快得到更好的帮助,请发布[SSCCE](http://sscce.org/)。 – 2012-04-06 16:01:10
['PointerInfo'](http://docs.oracle.com/javase/7/docs/api/java/awt/PointerInfo.html#getLocation())提供鼠标相对于整个屏幕的位置,而不是零件。 – Jeffrey 2012-04-06 16:02:36