public GAGenerationTreePanel(GAObjectMonitor monitor, String parentNodeTitle) {
    super();

    selectedChildrenPaths = new Vector();
    generationNumber = 1;
    saveNumber = 0;
    generations = new DefaultMutableTreeNode(parentNodeTitle);
    gaMonitor = monitor;

    setLayout(new BorderLayout());

    tree = new JTree(generations);

    tree.setShowsRootHandles(true);
    tree.setRootVisible(true);
    tree.putClientProperty("JTree.lineStyle", "Angled");

    // Add Action Listeners
    MyTreeSelectionListener listener = new MyTreeSelectionListener(monitor.getSelectionInfoPanel());
    MyTreeClickListener mlistener = new MyTreeClickListener();

    tree.addTreeSelectionListener(listener);
    tree.addMouseListener(mlistener);

    // Add Scroll Plane
    scrollPane = new JScrollPane(tree);
    add(scrollPane, BorderLayout.CENTER);

    // Add Menu Bar Functionality
    createMenuBar();
    add(menuBar, BorderLayout.NORTH);
  }
Пример #2
0
    public ReplicatedTreeView(ReplicatedTree tree, Object title) throws Exception {
      this.tree = tree;
      tree.addReplicatedTreeListener(this);

      addNotify();
      setTitle("ReplicatedTreeDemo: mbr=" + title);

      tree_model = new DefaultTreeModel(root);
      jtree = new JTree(tree_model);
      jtree.setDoubleBuffered(true);
      jtree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

      JScrollPane scroll_pane = new JScrollPane(jtree);

      populateTree();

      getContentPane().add(scroll_pane, BorderLayout.CENTER);
      addWindowListener(this);

      table_model.setColumnIdentifiers(new String[] {"Name", "Value"});
      table_model.addTableModelListener(this);

      setTableColumnWidths();

      tablePanel = new JPanel();
      tablePanel.setLayout(new BorderLayout());
      tablePanel.add(table.getTableHeader(), BorderLayout.NORTH);
      tablePanel.add(table, BorderLayout.CENTER);

      getContentPane().add(tablePanel, BorderLayout.SOUTH);

      jtree.addTreeSelectionListener(this); // REVISIT

      MouseListener ml =
          new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
              int selRow = jtree.getRowForLocation(e.getX(), e.getY());
              TreePath selPath = jtree.getPathForLocation(e.getX(), e.getY());
              if (selRow != -1) {
                selected_node = makeFQN(selPath.getPath());
                jtree.setSelectionPath(selPath);

                if (e.getModifiers() == java.awt.event.InputEvent.BUTTON3_MASK) {
                  operationsPopup.show(e.getComponent(), e.getX(), e.getY());
                }
              }
            }
          };

      jtree.addMouseListener(ml);

      createMenus();
      setLocation(50, 50);
      setSize(
          getInsets().left + getInsets().right + 485, getInsets().top + getInsets().bottom + 367);

      init();
      setVisible(true);
    }
Пример #3
0
 /**
  * Constructor.
  *
  * @param tree a JTree
  */
 public CheckTreeManager(JTree tree) {
   this.tree = tree;
   selectionModel = new CheckTreeSelectionModel(tree.getModel());
   tree.setCellRenderer(new CheckTreeCellRenderer(tree.getCellRenderer(), selectionModel));
   tree.addMouseListener(this);
   tree.addMouseMotionListener(this);
   selectionModel.addTreeSelectionListener(this);
 }
 public void addResultClickListener(ResultClickListener listener) {
   tree.addMouseListener(listener);
 }
Пример #5
0
  public JTrees() {
    JFrame frame = new JFrame("JTree Demo");
    Container c = frame.getContentPane();
    c.setLayout(new BorderLayout());

    // Create top node of a tree
    final DefaultMutableTreeNode top = new DefaultMutableTreeNode("Course");

    // Create a subtree UG
    final DefaultMutableTreeNode UG = new DefaultMutableTreeNode("UG");
    top.add(UG);
    final DefaultMutableTreeNode a1 = new DefaultMutableTreeNode("B.E");
    UG.add(a1);
    final DefaultMutableTreeNode a2 = new DefaultMutableTreeNode("B.C.A");
    UG.add(a2);
    final DefaultMutableTreeNode a3 = new DefaultMutableTreeNode("B.Sc");
    UG.add(a3);
    final DefaultMutableTreeNode a4 = new DefaultMutableTreeNode("B.Com");
    UG.add(a4);
    final DefaultMutableTreeNode a5 = new DefaultMutableTreeNode("B.A");
    UG.add(a5);

    // Create a subtree PG
    final DefaultMutableTreeNode PG = new DefaultMutableTreeNode("PG");
    top.add(PG);
    final DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("M.E");
    PG.add(b1);
    final DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("M.C.A");
    PG.add(b2);
    final DefaultMutableTreeNode b3 = new DefaultMutableTreeNode("M.Sc");
    PG.add(b3);
    final DefaultMutableTreeNode b4 = new DefaultMutableTreeNode("M.Com");
    PG.add(b4);
    final DefaultMutableTreeNode b5 = new DefaultMutableTreeNode("M.A");
    PG.add(b5);

    // Creating tree
    final JTree tree = new JTree(top);

    int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
    int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
    final JScrollPane jsp = new JScrollPane(tree, v, h);
    c.add(jsp, BorderLayout.CENTER);

    final JTextField text = new JTextField("", 20);
    c.add(text, BorderLayout.SOUTH);

    tree.addMouseListener(
        new MouseAdapter() {
          public void mouseClicked(MouseEvent me) {
            TreePath tp = tree.getPathForLocation(me.getX(), me.getY());
            if (tp != null) text.setText(tp.toString());
            else text.setText("");
          }
        });
    if (top.children() == b1) {
      System.out.println("M.E Cource Selected");
    }
    frame.setSize(300, 200);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
Пример #6
0
  public void init() {
    guangdong.add(foshan);
    guangdong.add(shantou);
    guangxi.add(guilin);
    guangxi.add(nanning);
    root.add(guangdong);
    root.add(guangxi);

    jf = new JFrame("树");
    tree = new JTree(root);
    // 获取JTree对应的TreeModel对象
    model = (DefaultTreeModel) tree.getModel();
    // 设置JTree可编辑
    tree.setEditable(true);
    MouseListener ml =
        new MouseAdapter() {
          // 按下鼠标时候获得被拖动的节点
          public void mousePressed(MouseEvent e) {
            // 如果需要唯一确定某个节点,必须通过TreePath来获取。
            TreePath tp = tree.getPathForLocation(e.getX(), e.getY());
            if (tp != null) {
              movePath = tp;
            }
          }
          // 鼠标松开时获得需要拖到哪个父节点
          public void mouseReleased(MouseEvent e) {
            // 根据鼠标松开时的TreePath来获取TreePath
            TreePath tp = tree.getPathForLocation(e.getX(), e.getY());

            if (tp != null && movePath != null) {
              // 阻止向子节点拖动
              if (movePath.isDescendant(tp) && movePath != tp) {
                JOptionPane.showMessageDialog(
                    jf, "目标节点是被移动节点的子节点,无法移动!", "非法操作", JOptionPane.ERROR_MESSAGE);
                return;
              }
              // 既不是向子节点移动,而且鼠标按下、松开的不是同一个节点
              else if (movePath != tp) {
                System.out.println(tp.getLastPathComponent());
                // add方法可以先将原节点从原父节点删除,再添加到新父节点中
                ((DefaultMutableTreeNode) tp.getLastPathComponent())
                    .add((DefaultMutableTreeNode) movePath.getLastPathComponent());
                movePath = null;
                tree.updateUI();
              }
            }
          }
        };
    tree.addMouseListener(ml);

    JPanel panel = new JPanel();

    addSiblingButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            // 获取选中节点
            DefaultMutableTreeNode selectedNode =
                (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
            // 如果节点为空,直接返回
            if (selectedNode == null) return;
            // 获取该选中节点的父节点
            DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent();
            // 如果父节点为空,直接返回
            if (parent == null) return;
            // 创建一个新节点
            DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新节点");
            // 获取选中节点的选中索引
            int selectedIndex = parent.getIndex(selectedNode);
            // 在选中位置插入新节点
            model.insertNodeInto(newNode, parent, selectedIndex + 1);
            // --------下面代码实现显示新节点(自动展开父节点)-------
            // 获取从根节点到新节点的所有节点
            TreeNode[] nodes = model.getPathToRoot(newNode);
            // 使用指定的节点数组来创建TreePath
            TreePath path = new TreePath(nodes);
            // 显示指定TreePath
            tree.scrollPathToVisible(path);
          }
        });
    panel.add(addSiblingButton);

    addChildButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            // 获取选中节点
            DefaultMutableTreeNode selectedNode =
                (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
            // 如果节点为空,直接返回
            if (selectedNode == null) return;
            // 创建一个新节点
            DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新节点");
            // 直接通过model来添加新节点,则无需通过调用JTree的updateUI方法
            // model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount());
            // 直接通过节点添加新节点,则需要调用tree的updateUI方法
            selectedNode.add(newNode);
            // --------下面代码实现显示新节点(自动展开父节点)-------
            TreeNode[] nodes = model.getPathToRoot(newNode);
            TreePath path = new TreePath(nodes);
            tree.scrollPathToVisible(path);
            tree.updateUI();
          }
        });
    panel.add(addChildButton);

    deleteButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            DefaultMutableTreeNode selectedNode =
                (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
            if (selectedNode != null && selectedNode.getParent() != null) {
              // 删除指定节点
              model.removeNodeFromParent(selectedNode);
            }
          }
        });
    panel.add(deleteButton);

    editButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            TreePath selectedPath = tree.getSelectionPath();
            if (selectedPath != null) {
              // 编辑选中节点
              tree.startEditingAtPath(selectedPath);
            }
          }
        });
    panel.add(editButton);

    jf.add(new JScrollPane(tree));
    jf.add(panel, BorderLayout.SOUTH);
    jf.pack();
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setVisible(true);
  }