精华内容
下载资源
问答
  • java画工作流流程图java生成流程图

              阿里云低价服务器1折特惠,优惠爽翻天,点我立即低价购买

    /*
     * Copyright 2015 iminasha.com All right reserved. This software is the confidential and proprietary information of
     * iminasha.com ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only
     * in accordance with the terms of the license agreement you entered into with iminasha.com.
     */
    package com.imiansha.wms.controller.workflow;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletOutputStream;
    
    import com.jfinal.kit.PathKit;
    import com.jfinal.render.Render;
    
    /**
     * 类DrawFlowChart.java的实现描述:根据审批人画流程图
     * 
     * @author leon 2015年7月14日 上午9:37:56
     */
    public class DrawFlowChart extends Render {
    
        private int                width;
        private final int          intervalOfX = 100;// 每个元素之间的x轴间距
        private List<List<String>> approvalers;//审批人组集合
    
        /**
         * @param width
         * @param approvalers
         */
        public DrawFlowChart(int width, List<List<String>> approvalers){
            super();
            this.width = width;
            this.approvalers = approvalers;
        }
    
        /**
         * @return the width
         */
        public int getWidth() {
            return width;
        }
    
        /**
         * @param width the width to set
         */
        public void setWidth(int width) {
            this.width = width;
        }
    
        /**
         * @return the approvalers
         */
        public List<List<String>> getApprovalers() {
            return approvalers;
        }
    
        /**
         * @param approvalers the approvalers to set
         */
        public void setApprovalers(List<List<String>> approvalers) {
            this.approvalers = approvalers;
        }
    
        @Override
        public void render() {
            BufferedImage image = drawFlowChartImg();
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);
            response.setContentType("image/jpeg");
    
            ServletOutputStream sos = null;
            try {
                sos = response.getOutputStream();
                ImageIO.write(image, "jpeg", sos);
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                if (sos != null) try {
                    sos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 画流程图
         * 
         * @return
         */
        private BufferedImage drawFlowChartImg() {
            // 获取箭头图标文件
            File srcFile = new File(PathKit.getRootClassPath() + File.separator + "arrow.png");
            Image srcImg = null;
            try {
                srcImg = ImageIO.read(srcFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
            // 计算画布的高度
            // 画布高度=每组审批人的总高度+箭头高度
            // 获取最多审批人的组
            // 每组中的每个审批人y坐标间隔20
            int every_approvaler_distance = 20;
            int maxApprovalCount = this.getMaxListSize(approvalers);
            // 计算画布的最高高度
            int height = maxApprovalCount * every_approvaler_distance + srcImg.getHeight(null);
    
            // 绘制宽=width,长=hight的图板
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            // 获取图形上下文,graphics想象成一个画笔
            Graphics2D graphics = (Graphics2D) image.getGraphics();
    
            // 对指定的矩形区域填充颜色
            graphics.setColor(Color.WHITE); // GREEN:绿色; 红色:RED; 灰色:GRAY
            graphics.fillRect(0, 0, width, height);
            // 箭头数量
            int arrowCount = 1;
            // 设置文字颜色
            graphics.setColor(Color.BLACK);
            graphics.setFont(new Font("宋体", Font.BOLD, 14));
            int lastGroupElementX = 0;// 最后一组元素的X坐标
            int arrowY = height / 2 - srcImg.getHeight(null);// 箭头的y坐标
            if (approvalers != null && approvalers.size() > 0) {
                for (List<String> approvalerList : approvalers) {
                    int i = 1;
                    int maxWidthOfGroup = 0;// 每组最大宽度
                    int compareTmp = 0;// 比较宽度的变量
                    lastGroupElementX += intervalOfX;// 最后一组的x坐标
                    int approvalerListSize = approvalerList.size();// 每组审批人数量
                    // 计算每个组的第一个元素的y坐标
                    int everyGruopFirstElementY = 0;
                    if (approvalerListSize % 2 == 0) {
                        everyGruopFirstElementY = maxApprovalCount * every_approvaler_distance / 2
                                                  - every_approvaler_distance
                                                  - (approvalerListSize / 2 - 1) * every_approvaler_distance;
                    } else {
                        everyGruopFirstElementY = maxApprovalCount * every_approvaler_distance / 2
                                                  - (approvalerListSize / 2 + 1) * every_approvaler_distance;
                    }
    
                    // 将审批人画在图片上
                    for (String elementStr : approvalerList) {
                        int strWidth = graphics.getFontMetrics().stringWidth(elementStr);
                        if (approvalerListSize < maxApprovalCount) {
                            graphics.drawString(elementStr, lastGroupElementX,
                                                everyGruopFirstElementY + i * every_approvaler_distance);
                        } else {
                            graphics.drawString(elementStr, lastGroupElementX, i * every_approvaler_distance);
    
                        }
                        // 计算最大的审批人字符串宽度
                        maxWidthOfGroup = strWidth;
                        if (maxWidthOfGroup < compareTmp) {
                            maxWidthOfGroup = compareTmp;
                        } else {
                            compareTmp = strWidth;
                        }
                        i++;
                    }
                    lastGroupElementX += maxWidthOfGroup;// 重新计算最后一个元素的y坐标
                    // 将箭头画在图片上
                    if (arrowCount < approvalers.size()) {
                        graphics.drawImage(srcImg, lastGroupElementX + srcImg.getWidth(null), arrowY, null);
                        lastGroupElementX += srcImg.getWidth(null);
                    }
                    arrowCount++;
                }
    
            }
    
            graphics.dispose();// 释放此图形的上下文并释放它所使用的所有系统资源
            return image;
    
        }
    
        /**
         * 获取list集合中最大的list size
         * 
         * @param list
         * @return
         */
        private int getMaxListSize(List<List<String>> list) {
    
            if (list == null || list.size() == 0) {
                return 0;
            }
            int maxSize = list.get(0).size();
            int compareTmp = maxSize;
    
            for (List<String> listTmp : list) {
    
                maxSize = listTmp.size();
                if (maxSize < compareTmp) {
                    maxSize = compareTmp;
                } else {
                    compareTmp = listTmp.size();
                }
            }
    
            return maxSize;
        }
    
    }
    
    展开全文
  • C++,java流程图生成器。请大家随意下载使用吧 C++,java流程图生成器。请大家随意下载使用吧 C++,java流程图生成器。请大家随意下载使用吧 C++,java流程图生成器。请大家随意下载使用吧
  • Java开发流程(流程图

    热门讨论 2010-04-10 16:58:42
    Java开发流程 Java开发流程 Java开发流程 Java开发流程 Java开发流程
  • java执行流程图

    千次阅读 2016-04-27 21:53:36
    解释了java执行的全过程示意,欢迎指出其中的错误。
    展开全文
  • Java流程图

    千次阅读 2015-06-16 20:42:59
    今天是2015.6.16第一天正式开课,老师教了怎么做流程图,以下是一些今天的理解:  首先认识流程图的组成框架有:起止框、输入框、判断框、处理框、流程线、连接点。  算法的基本特征:  1.有穷性:一个算法必须...

            今天是2015.6.16第一天正式开课,老师教了怎么做流程图,以下是一些今天的理解:

            首先认识流程图的组成框架有:起止框、输入框、判断框、处理框、流程线、连接点。

             算法的基本特征:

             1.有穷性:一个算法必须在执行有限个操作步骤后终止。

             2.确定性:算法中每一步的含义必须是确切的,不可出现任何二义性。

             3.有限性:算法中的每一步操作都应该能有效执行,一个不可执行的操作是无效的,例如.一个数被0除的操作就是无效的.应当避免这种操作。

             4.有零个或多个输入:这里的输入是指在算法开始之前所需要的初始数据,这些输入的多少取决于特定的问题。

             5.有一个或多个输出:所谓输出是指与输入有某种特定关系的量,在一个完整的算法中至少会有一个输出,例如.要计算从1累加到100.如果这个程序没有输出结果,那么他将变得毫无意义。

           以上是对流程图的一些特征,对于我自己来说,只要懂得了他的原理,其实挺简单的!
    展开全文
  • 于是进行了一下前期的Java绘图探索,通过java.awt.Graphics2D对绘制流程图的基本元素进行了编码,并将其展示在了jsp页面上。 首先编写一个servlet,然后在web.xml中对其进行配置,最后将图片展示在jsp页面。 1...

    由于项目需要,要求对用户流程进行图形化展示:用户对自己的操作通过查看流程图一目了然。于是进行了一下前期的Java绘图探索,通过java.awt.Graphics2D对绘制流程图的基本元素进行了编码,并将其展示在了jsp页面上。

    首先编写一个servlet,然后在web.xml中对其进行配置,最后将图片展示在jsp页面。

    1. 绘图方法:

    [java]  view plain  copy
    1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
    2.     response.setContentType("image/jpeg");//声明文件格式  
    3.     //绘制宽=480,长=640的图板  
    4.     int width=480,hight=720;  
    5.     BufferedImage image = new BufferedImage(width,hight,BufferedImage.TYPE_INT_RGB);  
    6.     //获取图形上下文,graphics想象成一个画笔  
    7.     Graphics2D graphics = (Graphics2D)image.getGraphics();  
    8.       
    9.     //消除线条锯齿  
    10.     graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);  
    11.       
    12.     //对指定的矩形区域填充颜色  
    13.     graphics.setColor(Color.ORANGE);    //GREEN:绿色;  红色:RED;   灰色:GRAY  
    14.     graphics.fillRect(00240720);  
    15.     //对指定的矩形区域填充颜色  
    16.     graphics.setColor(Color.PINK);    
    17.     graphics.fillRect(2400240720);  
    18.       
    19.     //生成随机数  
    20.     Random random = new Random();  
    21.     /* 
    22.      * 画线 x,y是坐标,定义线段的两个坐标点 
    23.      */  
    24.     graphics.setColor(Color.BLACK);  
    25.     int x=100,y=100,x1=100,y1=y;  
    26.     graphics.drawLine(x,y,x+x1,y1);  
    27.     /* 
    28.      *画出一个折线 
    29.      */  
    30.     int[] xPoints = {100,100,250,250};  
    31.     int[] yPoints = {180,150,150,180};  
    32.     graphics.drawPolyline(xPoints, yPoints, 4);  
    33.     /* 
    34.      * 画出一个闭合多边形(三角形) 
    35.      */  
    36.     int[] xPoints1 = {100,100,200};  
    37.     int[] yPoints1 = {240,320,280};  
    38.     graphics.drawPolygon(xPoints1, yPoints1, 3);  
    39.     /* 
    40.      * 画出一个闭合多边形(菱形) 
    41.      */  
    42.     int[] xPoints2 = {240,300,360,300};  
    43.     int[] yPoints2 = {280,240,280,320};  
    44.     graphics.drawPolygon(xPoints2, yPoints2, 4);  
    45.     graphics.setColor(Color.ORANGE);  
    46.     graphics.fillPolygon(xPoints2, yPoints2, 4);  
    47.     /* 
    48.      *绘制一个椭圆形  
    49.      */  
    50.     graphics.setColor(Color.GREEN);  
    51.     int xOval=100,yOval=360;  
    52.     graphics.drawOval(xOval, yOval, 100100);  
    53.   
    54.     /* 
    55.      *绘制一个矩形 
    56.      */  
    57.     //graphics.setColor(Color.GRAY);//--设置矩形边框颜色 。GREEN:绿色;  红色:RED;   灰色:GRAY  
    58.     int xRect=240,yRect=360;  
    59.     graphics.drawRect(xRect, yRect, 200100);  
    60.   
    61.     //设置文字颜色  
    62.     graphics.setColor(new Color( 20+random.nextInt(100),  20+random.nextInt(100),  20+random.nextInt(100) ));  
    63.     //设置文字内容、位置  
    64.     graphics.drawString("直线",100+50,100-5);  
    65.     graphics.drawString("折线"200150-5);  
    66.     graphics.drawString("空心三角形"110280);  
    67.     graphics.drawString("实心菱形"300-20280);  
    68.     graphics.drawString("椭圆形"100+50360+50);  
    69.     graphics.drawString("矩形"240+50360+50);  
    70.     //graphics.drawString("错误的背景颜色", 100, 540);  
    71.       
    72.     //graphics.setPaintMode();  
    73.     //graphics.translate(400, 600);  
    74.       
    75.     graphics.dispose();//释放此图形的上下文并释放它所使用的所有系统资源  
    76.       
    77.     ImageIO.write(image,"JPEG",response.getOutputStream());  
    78.     PrintWriter out = response.getWriter();  
    79.     out.flush();  
    80.     out.close();  
    81.     //super.doGet(request, response);  
    82. }  

    2. web.xml中配置servlet:

    [html]  view plain  copy
    1. <servlet>  
    2.     <servlet-name>graphics1</servlet-name>  
    3.     <servlet-class>hsy.graphics.test.GraphicsServlet</servlet-class>  
    4. </servlet>  
    5.   
    6. <servlet-mapping>  
    7.     <servlet-name>graphics1</servlet-name>  
    8.     <url-pattern>/servlet/graphics1</url-pattern>  
    9. </servlet-mapping>  

    3. Jsp页面中只需如下一句即可展示图形:

    [html]  view plain  copy
    1. <span style="white-space:pre">  </span><img id="" style="" src="../servlet/graphics1">  

    4. 页面图形展示如下:



    现在大家可以看看,充分发挥一下想象力,上图中是否包含了 ‘泳道’、‘开始节点’、‘结束节点’、’普通节点‘、‘流转线条’ 、‘描述文字’ 等一系列元素。那么剩下来的事情就是如何去绘制一个完整的流程图了,显然这不是一件简单的事情,但是有了这些基本的元素,再难应该也是可以绘制出来的。童鞋们,结合自己的项目,充分发挥你的想象力去完成流程图的绘制吧!

    展开全文
  • C/C++/JAVA程序流程图生成工具

    热门讨论 2010-10-18 17:18:49
    能将C,C++,JAVA等语言转换为流程图
  • Java类执行顺序详解+实例(阿里面试题)+详细讲解+流程图
  • 根据Java源码生成流程图

    万次阅读 多人点赞 2018-12-07 23:40:53
    手动来画的话很繁琐,于是我就想着有没有工具可以根据java源代码直接生成流程图。网上找了一番找到一个可以免费试用的流程图生成工具(visustin)。 工具软件 visustin这个软件是一个代码转换成流程图的神器,支持43种...
  • Java软件开发流程图Visio 2013.vsdx 文档管理软件、自动化打包软件、禅道、svn、maven等都在流程里面有规划
  • java流程图【思路】

    千次阅读 2017-10-23 10:48:00
    画的第一张流程图 把脑子里的东西能清晰的表现出来 学编程必备将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的...
  • 一、流程图简单介绍 流程图 (Flow Chart )是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务的管理过程。...
  • JAVA 循环语句 流程图

    千次阅读 2017-10-19 09:11:10
    流程图
  • 免费软件,可自动分析C/C++/Java/Python/C#/Objective-C等项目的源代码并生成流程图和函数调用关系图
  • 关于学习java后台的流程图

    千次阅读 2017-05-18 13:43:44
    最近打算学一下java后台,在此记录一下自己学习java后台的流程图还有mark; 最近几天把java基础复习了一下,对于java基础应用于开发后台还是没有问题的; 学习javaEE 首先要学习数据库,我学的数据库是 很简单 ...
  • 想做一个绘制类似流程图的程序,就是有框,有箭头这种。第一次接触JAVA绘图,最后在web端展示,想问一下有没有什么可以跟JAVA合用的小程序或者小插件,求指点,然后我再去针对学习,十分感谢,最好是简单的
  • Java程序员必备的一些流程图(拿走不谢)

    万次阅读 多人点赞 2019-07-08 15:09:35
    整理了一些Java基础流程图/架构图,做一下笔记,大家一起学习。 (想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!) 1.spring的生命周期 Spring作为当前Java最流行、最...
  • 按照工具要求把模块的要求参数传入和封装,把线条的参数要求和封装可以很成功的生成流程图样子
  • 自己总结的java Web开发流程图。能够理清Java Web开发的整体思路.仅供初学者学习
  • Java 线程线程状态流程图

    千次阅读 2018-02-24 17:19:49
    新建(new):新创建了一个线程对象。 可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。...
  • 代码生成流程图 流程图绘制解决方案 java c#.net php v2   1.1. Markdown 推荐,就是代码和flow都不能直接使用。1 1.2. Java code2flow 推荐,最起码代码能用,flow能看1 2. visus1211 3. 别的工具...
  • java 8 线程池详解-流程图

    千次阅读 2019-02-24 15:09:20
    java引入线程池的目的是为了复用线程,因为线程的创建和销毁都需要时间开销. 创建线程池的方法有很多种: ExecutorService service = Executors.newCachedThreadPool(); ExecutorService service1 = Executors....
  • java运行流程

    千次阅读 2017-08-20 10:00:56
    运行流程 我们都知道java一直宣传的口号是:一次编译,到处运行。 java程序经过一次编译之后,将java代码编译为字节码也就是class文件,然后在不同的操作系统上依靠不同的java虚拟机进行解释,最后...
  • 在Word 中编写算法实现学生成绩等级的输出,并绘制对应算法的流程图。 功能要求:输入学生成绩,输出对应成绩等级,输出规则如下: 学生成绩区间 对应成绩等级 [90,100] A ...
  • java.awt.Graphics2D绘制流程图基本元素

    万次阅读 2012-01-10 10:30:54
    java.lang.Object ----java.awt.Graphics ----java.awt....于是进行了一下前期的java绘图探索,通过java.awt.Graphics2D对绘制流程图的基本元素进行了编码,并将其展示在了jsp页面上。 首先编写一个servlet
  • java详细学习路线及路线

    万次阅读 多人点赞 2018-05-20 16:15:02
    java详细路线: 原文出自点击打开链接 本文将告诉你学习Java需要达到的30个目标,学习过程中可能遇到的问题,及学习路线。希望能够对你的学习有所帮助。对比一下自己,你已经掌握了这30条中的多少条了呢? ...
  • activiti7的流程图、模板图及子流程图展示 流程图需展示流程完成情况,模板图根据key找到最新模板展示。子流程需从主流程中找到CallActiviti的节点,找到对应的子流程id(已启动)或模板key(未启动),再进行对应的流程...
  • 2 Java虚拟机加载器结构简述 2.1 JVM三种预定义类型加载器 2.2 加载双亲委派机制介绍和分析 2.3 加载双亲委派示例 3 java程序动态扩展方式 3.1 调用java.lang.Class.forName(…)加载 3.2 用户自定义...
  • 微信小程序Java登录流程

    万次阅读 多人点赞 2018-05-10 15:05:04
    一、登录流程图二、微信小程序端doLogin:function(callback = () =&gt;{}){ let that = this; wx.login({ success:function(loginRes){ if(loginRes){ //获取用户信息 wx.getUserInfo({ withCredentials:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 444,684
精华内容 177,873
关键字:

java类流程图

java 订阅