@Override
 public void mouseClicked(MouseEvent event) {
   JTree tree = (JTree) event.getSource();
   int x = event.getX();
   int y = event.getY();
   int row = tree.getRowForLocation(x, y);
   TreePath path = tree.getPathForRow(row);
   if (path != null) {
     CheckBoxTreeNode node = (CheckBoxTreeNode) path.getLastPathComponent();
     if (node != null) {
       boolean isSelected = !node.isSelected();
       node.setSelected(isSelected);
       ((DefaultTreeModel) tree.getModel()).nodeStructureChanged(node);
     }
   }
 }
    @Override
    public void mouseClicked(MouseEvent event) {
      JTree tree = (JTree) event.getSource();
      int x = event.getX();
      int y = event.getY();
      int row = tree.getRowForLocation(x, y);
      TreePath path = tree.getPathForRow(row);

      if (path != null) {
        CheckBoxTreeNode node = (CheckBoxTreeNode) path.getLastPathComponent();

        if (node != null) {
          boolean isSelected = !node.isSelected();
          node.setSelected(isSelected);
          ((DefaultTreeModel) tree.getModel()).nodeStructureChanged(node);
        }
      }

      // 查看整棵树的选择项
      for (int i = 0; i < tree.getRowCount(); i++) {
        TreePath treePath = tree.getPathForRow(i);
        CheckBoxTreeNode treeNode = (CheckBoxTreeNode) treePath.getLastPathComponent();

        if (treeNode.getUserObject() instanceof ServerConfigForModel) {
          if (treeNode.isSelected) {
            filter.setServerId(((ServerConfigForModel) treeNode.getUserObject()).getId());
          } else {
            filter.removeServerId(((ServerConfigForModel) treeNode.getUserObject()).getId());
          }
        }
      }
      filterOpcItem();
    }
  protected void initTree(List<OPCServerConnectConfig> serverConfigs) {
    CheckBoxTreeNode rootNode = new CheckBoxTreeNode("OPC Server");
    for (OPCServerConnectConfig serverConfig : serverConfigs) {
      CheckBoxTreeNode node1 =
          new CheckBoxTreeNode(
              new ServerConfigForModel(serverConfig.getId(), serverConfig.getName()));
      CheckBoxTreeNode node1_1 =
          new CheckBoxTreeNode(
              new ServerConfigForModel(serverConfig.getId(), serverConfig.getGroupName()));

      node1.add(node1_1);
      rootNode.add(node1);
    }

    DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
    jTree1.setModel(treeModel);
    jTree1.addMouseListener(new CheckBoxTreeNodeSelectionListener());
    jTree1.setCellRenderer(new CheckBoxTreeCellRenderer());
  }
  /** 生成树形结构 */
  public void generateTree(List<FileLayoutVariableModel> getTreeList) {
    JTree tree = new JTree();
    CheckBoxTreeNode rootNode = new CheckBoxTreeNode("全选");
    for (int i = 0; i < getTreeList.size(); i++) {
      File file = new File(getTreeList.get(i).getFileName());
      CheckBoxTreeNode subTree = new CheckBoxTreeNode(file.getName() + "   路径:" + file.getPath());
      List<VariableDataModel> subList = getTreeList.get(i).getVariableList();

      for (int j = 0; j < subList.size(); j++) {
        String temp = subList.get(j).getVariableType();
        int tempIndex = temp.lastIndexOf(".");
        if (tempIndex != -1) {
          temp = temp.substring(tempIndex + 1, temp.length());
        }
        CheckBoxTreeNode subTreeList =
            new CheckBoxTreeNode(
                "类型:" + temp + "              名称:" + subList.get(j).getVariableName());
        subTree.add(subTreeList);
      }
      rootNode.add(subTree);
    }
    DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
    tree.addMouseListener(new CheckBoxTreeNodeSelectionListener());
    tree.setModel(treeModel);
    // 展开一棵树
    CommonMethod.expandAll(tree, new TreePath(tree.getModel().getRoot()), true);
    // 用来绘制checkbox
    tree.setCellRenderer(new CheckBoxTreeCellRenderer());
    JScrollPane scroll = new JScrollPane(tree);
    scroll.setBounds(0, 0, 700, 500);
    add(scroll);

    JButton button = new JButton("确定");
    button.setBounds(10, 520, 150, 30);
    button.addActionListener(new ClickListener(treeModel));
    add(button);
  }
    @Override
    public void actionPerformed(ActionEvent arg0) {
      // TODO Auto-generated method stub
      list = new ArrayList<RecordSelectedIndexModel>();
      // 判断是否选中状态
      boolean isChoose = false;

      CheckBoxTreeNode root = (CheckBoxTreeNode) model.getRoot();
      for (int i = 0; i < root.getChildCount(); i++) {
        CheckBoxTreeNode second = (CheckBoxTreeNode) root.getChildAt(i);
        RecordSelectedIndexModel indexModel = new RecordSelectedIndexModel();
        indexModel.setIndex(i);
        List<Integer> indexList = new ArrayList<Integer>();
        for (int j = 0; j < second.getChildCount(); j++) {
          CheckBoxTreeNode third = (CheckBoxTreeNode) second.getChildAt(j);
          if (third.isSelected) {
            isChoose = true;
            indexList.add(j);
          }
        }
        indexModel.setSubListIndex(indexList);
        list.add(indexModel);
      }

      // 将数据输出到目标文件中
      try {
        if (isChoose) {
          new SelectMethodListInterface(
              activityPath,
              codingType,
              list,
              getWidgetByXmlParser,
              modifierRadioButton,
              isListenerRadioButton);

        } else {
          common.showErrorMessage("请选择数据!");
        }
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }