polygon.java

来自「JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流」· Java 代码 · 共 101 行

JAVA
101
字号
/* * PolyGon.java * * Created on April 29, 2005, 6:43 PM */package flow.graph.gui.graph.item.unit;import java.awt.*;import java.awt.event.MouseEvent;/** * * @author hysun */public class PolyGon implements IShape {        private Color color;        private Stroke stroke;        private PointsSet pointsSet;        private boolean finalized;        private int currX, currY;        public PolyGon(Color c, Stroke s, int x, int y) {        this();        color = c;        stroke = s;        pointsSet.addPoint(x, y);        currX = x;        currY = y;        finalized = false;    }        public PolyGon() {        pointsSet = new PointsSet();    }        public void processCursorEvent(MouseEvent e, int t) {        currX = e.getX();        currY = e.getY();        if (t == IShape.RIGHT_PRESSED) {            pointsSet.addPoint(currX, currY);        } else if (t == IShape.LEFT_RELEASED) {            finalized = true;            pointsSet.addPoint(currX, currY);        }    }        public void draw(Graphics2D g) {        g.setColor(color);        g.setStroke(stroke);        if (finalized) {    //draw a close polygon            int[][] points = pointsSet.getPoints();            if (points == null)                return;            g.drawPolygon(points[0], points[1], points[0].length);        } else {    //don't draw a closed polygon            int[][] points = pointsSet.getPoints(currX, currY);            g.drawPolyline(points[0], points[1], points[0].length);        }    }        public String getShapeData() {        int si = 0;        for (int i=0; i<DrawingBoard.STROKES.length; i++) {            if (stroke == DrawingBoard.STROKES[i]) {                si = i;                break;            }        }        StringBuffer buffer = new StringBuffer();        buffer.append(color.getRGB());        buffer.append(":");        buffer.append(si);        int[][] ps = pointsSet.getPoints();        for (int i=0; i<ps[0].length; i++) {            buffer.append(":");            buffer.append(ps[0][i]);            buffer.append(":");            buffer.append(ps[1][i]);        }        return buffer.toString();    }        public void setShapeData(String data) throws Exception {        String splits[] = data.split(":");        color = new Color(Integer.parseInt(splits[0]));        stroke = DrawingBoard.STROKES[Integer.parseInt(splits[1])];        for (int i=2; i<splits.length; i+=2) {            pointsSet.addPoint(Integer.parseInt(splits[i]),                    Integer.parseInt(splits[i+1]));        }        finalized = true;    }    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?