谁能帮我写这个函数?
要求是画一条箭头线,线条起点是(x1,y1),终点是(x2,y2),箭头画在终点上。public void drawArrowLine(Graphics2D g,int x1,int y1,int x2,int y2){  ...}

解决方案 »

  1.   

    public void paint(Graphics g) {
      Arrow arrow=new Arrow();
      arrow.drawArrow(g,100,100,Math.PI/4,100,Arrow.SIDE_LEAD);
    }for example :import java.awt.*;public class Arrow {
      public static final int SIDE_LEAD=0,
                              SIDE_TRAIL=1,
                              SIDE_BOTH=2,
                              SIDE_NONE=3;
      public final double pi=Math.PI;
      
      public Arrow () { ; }  public void drawArrow(Graphics g,
                            int x,int y,
                            double theta,
                            int length,
                            int side) {
        try {
          if (length < 0) { 
            theta+=pi;
            length*=-1;
          }
          int x1,y1;
          x1=(int)Math.ceil(x + length*Math.cos(theta));
          y1=(int)Math.ceil(y - length*Math.sin(theta));
          g.drawLine(x,y,x1,y1);      switch (side) {
            case SIDE_LEAD :
              drawArrow(g,x1,y1,theta+5*pi/4,5,SIDE_NONE);
              drawArrow(g,x1,y1,theta+3*pi/4,5,SIDE_NONE);
              break;
            case SIDE_TRAIL :
              drawArrow(g,x,y,theta-pi/4,5,SIDE_NONE);
              drawArrow(g,x,y,theta+pi/4,5,SIDE_NONE);
              break;
            case SIDE_BOTH :
              drawArrow(g,x,y,theta-pi/4,5,SIDE_NONE);
              drawArrow(g,x,y,theta+pi/4,5,SIDE_NONE);
              drawArrow(g,x1,y1,theta+5*pi/4,5,SIDE_NONE);
              drawArrow(g,x1,y1,theta+3*pi/4,5,SIDE_NONE);
              break;
            case SIDE_NONE :
              break;
            default:
              throw new IllegalArgumentException();
          }
        }
        catch (IllegalArgumentException iae) {
          System.out.println("Invalid value for variable side.");
        }
      }
    }
      

  2.   

    小弟不才。上面大哥的程序能改造成我提供的接口形式的吗?
    public void drawArrowLine(Graphics2D g,int x1,int y1,int x2,int y2)谢谢!
      

  3.   

    呵呵。你把它就当成一个控件,继承component