public void removeArrow(Arrow arrow) {
        if (arrows.contains(arrow)) {
            arrows.remove(arrow);
        }
        for (Cell cell : getCells()) {
            if (arrow.getStartNode().equals(cell)) {
                if (cell.getToArrowList().contains(arrow)) {
                    cell.getToArrowList().remove(arrow);
                    setChanged(true);
                    Logger.debug("移除节点跳转关系:" + arrow.getStartNode() + " -" + arrow.getText() + "-> " + arrow.getEndNode());
                }
            }
        }
        for (NodeResource node : displayProject.getDefineNodes()) {
            for (int i = node.getJumpNodes().size(); i > 0; i--) {
                NodeJumpResource jump = node.getJumpNodes().get(i - 1);
                if (node.getID() == Long.parseLong(arrow.getStartNode().getId()) && jump.getToId() == Long.parseLong(arrow.getEndNode().getId())) {
                    displayProject.getNodeResource(String.valueOf(node.getID())).getJumpNodes().remove(jump);
                }
            }
        }

        getSelectArrows().remove(arrow);

        repaint();
    }