CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

写了一个静态画饼分图程序,但不知道怎么改成动态分图

楼主cds1(风雨中飘摇)2006-05-04 13:26:45 在 Java / J2SE / 基础类 提问

就是说,想用鼠标单击圆上的某一点后,  
  程序自动重画,  
  可以按单击点的坐标分成更小的块的  
  问题点数:10、回复次数:6Top

1 楼cds1(风雨中飘摇)回复于 2006-05-05 18:26:56 得分 0

没有人指点一下吗?  
   
  up一下先Top

2 楼UnAgain()回复于 2006-05-05 19:48:09 得分 0

首先你要监听鼠标事件。  
  其次要明确鼠标点的范围,比如是否在圆周上,为了方便使用,应该允许一定的偏离范围。  
  然后,你要计算角度,这比较麻烦。你需要根据Rantangle得出圆心,通过反三角运算得到角度。  
   
  等等,你怎么画饼?是通过Arc还是画圆后再画直线?Top

3 楼cds1(风雨中飘摇)回复于 2006-05-05 20:48:38 得分 0

我的源程序是这样的,我就是不知道要如何触发鼠标事件,以及计算角度啊  
  import   java.awt.*;  
  import   java.awt.event.*;  
  import   java.awt.Graphics;  
  public   class   circle   extends   Frame  
  {  
  public   circle()  
  {  
  addWindowListener(new   WinClose());  
  }  
  public   static   void   main(String[]   args)    
  {  
  new   circle().setVisible(true);  
  }  
  public   void   paint(Graphics   g)  
  {  
  double   PI=3.1415926;  
  g.setColor(Color.red);  
  g.fillArc(50,50,200,200,0,120);  
  g.setColor(Color.BLUE);  
  g.fillArc(50,50,200,200,120,80);  
  g.setColor(Color.GREEN);  
  g.fillArc(50,50,200,200,200,80);  
  g.setColor(Color.black);  
  g.fillArc(50,50,200,200,280,80);  
  g.setColor(Color.green);  
  g.fillArc(50,50,200,200,80,60);  
  }  
  class   WinClose   extends   WindowAdapter  
  {  
  public   void   windowClosing(WindowEvent   e)  
  {  
  System.exit(0);  
  }  
  }  
  /*public   void   mouseClicked(MouseEvent   e)  
  {  
  x=getX();  
  y=getY();  
  repaint();  
  }  
  public   void   mouseEntered(MouseEvent   e)  
  {}  
  public   void   mouseExited(MouseEvent   e)  
  {}  
  public   void   mousePressed(MouseEvent   e)  
  {}  
  public   void   mouseReleased(MouseEvent   e)  
  {}*/  
   
  }  
  Top

4 楼UnAgain()回复于 2006-05-06 08:00:11 得分 10

兄弟,我只能做到这里了,其它的需要你自己琢磨了。  
  不过我建议你先开阔java语言、程序设计等知识面,多读一些经典的代码,别一开始就自己扎进去。  
   
          //   新增代码  
          final   static   double   ox   =   150.0,   oy   =   150.0;  
          final   static   double   r   =   100.0;  
          final   static   int   off   =   5;  
   
          //   原代码  
          public   circle()   {  
                  addWindowListener(new   WinClose());  
   
                  //   新增代码  
                  addMouseListener(  
                          new   MouseAdapter(){  
                                  public   void   mouseClicked(MouseEvent   e){  
                                          double   x   =   e.getX(),   y   =   e.getY();  
   
                                          double   dist   =    
                                                  java.awt.geom.Point2D.distance(x,   y,   ox,   oy);  
   
                                          if   ((r   +   off   <   dist)   ||   (r   -   off   >   dist))   {  
                                                  //   鼠标指针不在有效的范围内。  
                                                  return;  
                                          }  
   
                                          //   调整坐标方向  
                                          x   =   x   -   ox;   y   =   oy   -   y;  
   
                                          double   radian   =   Math.atan(y/x);  
                                          double   angle   =   180   *   radian   /   Math.PI;  
   
                                          if   (x   >=   0)   {  
                                                  if   (y   <   0)   {  
                                                          angle   +=   360;  
                                                  }  
                                          }   else   {  
                                                  angle   +=   180;  
                                          }  
   
                                          //   得到角度  
                                          System.out.println(angle);  
                                  }  
                  });  
          }  
  Top

5 楼cds1(风雨中飘摇)回复于 2006-05-07 18:54:17 得分 0

太谢谢这位老兄啦,  
  我会认真琢磨的Top

6 楼xiachedan(瞎扯蛋)回复于 2006-05-09 17:17:14 得分 0

关注Top

相关问题

关键词

得分解答快速导航

  • 帖主:cds1
  • UnAgain

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo