画的是一条条的线,还是弧线,还是扇形?

解决方案 »

  1.   

    只有直线和弧线 没其他形状
      

  2.   

    角度自定是什么意思?说详细一些!
      

  3.   

    角度自定就是说两条线之间的角度是用户自己定义的比如可能是60度 也可能是135度 等等要根据不同的角度来把线按规定的角度画出来
      

  4.   

    /*
     * DrawTree.java
     *
     * Created on 2004年8月4日, 下午4:06
     */package Foundation;import java.awt.*;
    import javax.swing.JComponent;
    import javax.swing.JPanel;/**
     *
     * @author  Administrator
     */
    public class DrawTree
    {
        //参数定义
        private int size;
        private SearchTreeNode nodes[];
        private int levels[];
        private int nodesIndex;
        private final int diameter = 10;
        private JPanel panel;
        private Color color;
        private SearchTreeNode root;
        private int labelSize;
        //构造函数
        public DrawTree(SearchTreeNode searchtreenode, int i, JPanel jPanel, Color color1, int j)
        {
            nodesIndex = -1;
            color = color1;
            root = searchtreenode;
            panel = jPanel;
            size = i;
            labelSize = j;
            color1 = Color.red;
            constructTree();
        }
        //用递归的思想方法建立二叉排序树,把节点保存下来
        private void build(SearchTreeNode searchtreenode, int i)
        {
            if(searchtreenode != null)
            {
                build(searchtreenode.left, i + 1);
                nodesIndex++;
                nodes[nodesIndex] = searchtreenode;
                levels[nodesIndex] = i;
                build(searchtreenode.right, i + 1);
            }
        }
        //清除画板空间
        public void clearPanel()
        {
            Graphics g = panel.getGraphics();
            g.setColor(panel.getBackground());
            g.drawRect(panel.getVisibleRect().getBounds().x, panel.getVisibleRect().getBounds().y, panel.getVisibleRect().getBounds().width, panel.getVisibleRect().getBounds().height);
            g.fillRect(panel.getVisibleRect().getBounds().x, panel.getVisibleRect().getBounds().y, panel.getVisibleRect().getBounds().width, panel.getVisibleRect().getBounds().height);
        }
        //构造树
        private void constructTree()
        {
            nodesIndex = -1;
            nodes = new SearchTreeNode[size];
            levels = new int[size];
            build(root, 1);
            for(int i = 0; i < size; i++)
            {
                drawNode(new Point(i * 20, levels[i] * 20), nodes[i].contents.toString());
                if(nodes[i].left != null)
                {
                    SearchTreeNode searchtreenode = nodes[i].left;
                    int j = index(searchtreenode);
                    drawLineSegment(new Point(i * 20, levels[i] * 20), new Point(j * 20, levels[j] * 20));
                }
                if(nodes[i].right != null)
                {
                    SearchTreeNode searchtreenode1 = nodes[i].right;
                    int k = index(searchtreenode1);
                    drawLineSegment(new Point(i * 20, levels[i] * 20), new Point(k * 20, levels[k] * 20));
                }
            }
        }
        //画连接两个节点之间的线
        private void drawLineSegment(Point point, Point point1)
        {
            Graphics g = panel.getGraphics();
            g.setColor(color);
            g.drawLine(point.x + 5, point.y + 5, point1.x + 5, point1.y + 5);
        }
        //画节点
        private void drawNode(Point point, String s)
        {
            Graphics g = panel.getGraphics();
            g.setColor(color);
            g.drawOval(point.x, point.y, 10, 10);
            g.fillOval(point.x, point.y, 10, 10);
            g.setColor(Color.black);
            g.setFont(new Font("Times Roman", 0, 9));
            String s1 = s.length() <= labelSize ? s : s.substring(0, labelSize);
            g.drawString(s1, point.x, point.y);
        }
        //序列化
        private int index(SearchTreeNode searchtreenode)
        {
            for(int i = 0; i < size; i++)
                if(nodes[i] == searchtreenode)
                    return i;
            return -1;
        }
        //更新画板
        public void update(SearchTreeNode searchtreenode, int i)
        {
            clearPanel();
            root = searchtreenode;
            size = i;
            constructTree();
        }
    }
    这是一个画二叉树的类,你可以看看是否有帮助。其他的是爱莫能助了
      

  5.   

    三角函数计算出线的对应坐标点