コード例 #1
0
 // 鼠标按下时:开始画连线,记下连线的开始节点,并在开始节点中显示红色的中心圆
 @Override
 public void doWhenMousePressed(ExecutionContext ec, MouseEvent evt) {
   if (ec.funcType == FuncType.PROCESS_TRANSITION) { // 画连线
     BaseNode node = ec.getHelper().getFromAllNodeElementWhichContains(evt.getX(), evt.getY());
     if (node != null) {
       node.setCenterCircleColor(Color.RED); // 显示红色的中心圆
       node.setShowCenterCircle(true);
       fromNode = node;
       ec.needRepaint();
     }
   }
 }
コード例 #2
0
  // 鼠标拖拽时:更新正在画的连线
  @Override
  public void doWhenMouseDragged(ExecutionContext ec, MouseEvent evt) {
    if (fromNode != null) { // 不停的更新连线,不需要判断是否是画连线状态,因为在MousePressed时已判断过了
      // 1,先重画,以便擦除上次画的小圆点
      if (toNode != null) { // From元素是要一直显示中心圆的
        toNode.setShowCenterCircle(false);
        toNode = null;
      }

      // 2,找出当前坐标所在的节点,并在光标所在的节点中显示中心圆
      toNode = ec.getHelper().getFromAllNodeElementWhichContains(evt.getX(), evt.getY());
      if (toNode == fromNode) {
        toNode = null; // 如果to和from是一个节点,就不需要重复显示中心圆
      }
      if (toNode != null) {
        toNode.setShowCenterCircle(true); // 显示中心圆
      }

      // 3,显示从From节点到当前位置的连线
      ec.getHelper().repaintDesignerPanel(); // 需要先重画
      Transition.drawTranstionFromConterPointTo(ec.getGraphics(), fromNode, evt.getX(), evt.getY());
    }
  }
コード例 #3
0
  // 鼠标移动时:清除上次正在显示的节点的中心圆,并显示光标所在的节点的中心圆
  @Override
  public void doWhenMouseMoved(ExecutionContext ec, MouseEvent evt) {
    if (ec.funcType == FuncType.PROCESS_TRANSITION) { // 画连线
      // 1,先重画,以便擦除上次画的节点的中心圆 // TODO 如果没有移出正在显示的节点上,就不用这么样擦除再重画了
      if (currentShowingCenterCircleNode != null) {
        currentShowingCenterCircleNode.setShowCenterCircle(false);
        currentShowingCenterCircleNode = null;
        ec.needRepaint();
      }

      // 2,在移到某元素上时,在元素中点显示一个小圆点
      BaseNode node = ec.getHelper().getFromAllNodeElementWhichContains(evt.getX(), evt.getY());
      if (node != null) {
        node.setShowCenterCircle(true); // 让元素在中央显示一个小圆
        currentShowingCenterCircleNode = node;
        ec.needRepaint();
      }
    }
  }