⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treevisualizer.java

📁 wekaUT是 university texas austin 开发的基于weka的半指导学习(semi supervised learning)的分类器
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    m_nodeMenu = new JPopupMenu();    /* A visualize choice for the node, may not be available. */    m_visualise = new JMenuItem("Visualize The Node");    m_visualise.setActionCommand("Visualize The Node");    m_visualise.addActionListener(this);    m_nodeMenu.add(m_visualise);       if (m_listener != null) {      m_remChildren = new JMenuItem("Remove Child Nodes");      m_remChildren.setActionCommand("Remove Child Nodes");      m_remChildren.addActionListener(this);      m_nodeMenu.add(m_remChildren);                  m_classifyChild = new JMenuItem("Use Classifier...");      m_classifyChild.setActionCommand("classify_child");      m_classifyChild.addActionListener(this);      m_nodeMenu.add(m_classifyChild);            /*m_sendInstances = new JMenuItem("Add Instances To Viewer");      m_sendInstances.setActionCommand("send_instances");      m_sendInstances.addActionListener(this);      m_nodeMenu.add(m_sendInstances); */          }        m_focusNode = -1;    m_highlightNode = -1;        addMouseMotionListener(this);    addMouseListener(this);    //repaint();    //frame_limiter.setInitialDelay();    m_frameLimiter.setRepeats(false);    m_frameLimiter.start();  }    /**   * Constructs Displayer with the specified Node as the top    * of the tree, and uses the NodePlacer to place the Nodes.   * @param tdl listener.   * @param n the top Node of the tree to be displayed.   * @param p the algorithm to be used to position the nodes.   */    public TreeVisualizer(TreeDisplayListener tdl, Node n, NodePlace p) {    //if the size needs to be automatically alocated I will do it here    setBorder(BorderFactory.createTitledBorder("Tree View"));     m_listener = tdl;    m_topNode = n;    m_placer = p;    m_placer.place(m_topNode);    m_viewPos = new Dimension(0, 0);    //will be adjusted     m_viewSize = new Dimension(800, 600);   //I allocate this now so that    //the tree will be visible    //when the panel is enlarged    m_nViewPos = new Dimension(0, 0);                m_nViewSize = new Dimension(800, 600);                                                    m_scaling = 0;        m_numNodes = m_topNode.getCount(m_topNode,0);   //note the second argument     //must be a zero, this is a     //recursive function    m_numLevels = m_topNode.getHeight(m_topNode,0);      m_nodes = new NodeInfo[m_numNodes];    m_edges = new EdgeInfo[m_numNodes-1];    arrayFill(m_topNode, m_nodes, m_edges);        changeFontSize(12);    m_mouseState = 0;    m_oldMousePos = new Dimension(0, 0);    m_newMousePos = new Dimension(0, 0);    m_frameLimiter = new Timer(120, this);    m_winMenu = new JPopupMenu();    m_topN = new JMenuItem("Center on Top Node");           //note to change     //language change this line    m_topN.setActionCommand("Center on Top Node");          //but not this     //one, same for all menu items    m_fitToScreen = new JMenuItem("Fit to Screen");    m_fitToScreen.setActionCommand("Fit to Screen");    //unhide = new JMenuItem("Unhide all Nodes");    m_selectFont = new JMenu("Select Font");    m_selectFont.setActionCommand("Select Font");    m_autoScale = new JMenuItem("Auto Scale");    m_autoScale.setActionCommand("Auto Scale");    m_selectFontGroup = new ButtonGroup();        m_accept = new JMenuItem("Accept The Tree");    m_accept.setActionCommand("Accept The Tree");        m_winMenu.add(m_topN);    m_winMenu.addSeparator();    m_winMenu.add(m_fitToScreen);    m_winMenu.add(m_autoScale);    m_winMenu.addSeparator();    //m_winMenu.add(unhide);    m_winMenu.addSeparator();    m_winMenu.add(m_selectFont);    m_winMenu.addSeparator();    if (m_listener != null) {      m_winMenu.add(m_accept);    }        m_topN.addActionListener(this);    m_fitToScreen.addActionListener(this);    //unhide.addActionListener(this);    m_autoScale.addActionListener(this);    m_accept.addActionListener(this);            m_size24 = new JRadioButtonMenuItem("Size 24",false);//,select_font_group);    m_size22 = new JRadioButtonMenuItem("Size 22",false);//,select_font_group);    m_size20 = new JRadioButtonMenuItem("Size 20",false);//,select_font_group);    m_size18 = new JRadioButtonMenuItem("Size 18",false);//,select_font_group);    m_size16 = new JRadioButtonMenuItem("Size 16",false);//,select_font_group);    m_size14 = new JRadioButtonMenuItem("Size 14",false);//,select_font_group);    m_size12 = new JRadioButtonMenuItem("Size 12",true);//,select_font_group);    m_size10 = new JRadioButtonMenuItem("Size 10",false);//,select_font_group);    m_size8 = new JRadioButtonMenuItem("Size 8",false);//,select_font_group);    m_size6 = new JRadioButtonMenuItem("Size 6",false);//,select_font_group);    m_size4 = new JRadioButtonMenuItem("Size 4",false);//,select_font_group);    m_size2 = new JRadioButtonMenuItem("Size 2",false);//,select_font_group);    m_size1 = new JRadioButtonMenuItem("Size 1",false);//,select_font_group);    m_size24.setActionCommand("Size 24");//,select_font_group);    m_size22.setActionCommand("Size 22");//,select_font_group);    m_size20.setActionCommand("Size 20");//,select_font_group);    m_size18.setActionCommand("Size 18");//,select_font_group);    m_size16.setActionCommand("Size 16");//,select_font_group);    m_size14.setActionCommand("Size 14");//,select_font_group);    m_size12.setActionCommand("Size 12");//,select_font_group);    m_size10.setActionCommand("Size 10");//,select_font_group);    m_size8.setActionCommand("Size 8");//,select_font_group);    m_size6.setActionCommand("Size 6");//,select_font_group);    m_size4.setActionCommand("Size 4");//,select_font_group);    m_size2.setActionCommand("Size 2");//,select_font_group);    m_size1.setActionCommand("Size 1");//,select_font_group);            m_selectFontGroup.add(m_size24);    m_selectFontGroup.add(m_size22);    m_selectFontGroup.add(m_size20);    m_selectFontGroup.add(m_size18);    m_selectFontGroup.add(m_size16);    m_selectFontGroup.add(m_size14);    m_selectFontGroup.add(m_size12);    m_selectFontGroup.add(m_size10);    m_selectFontGroup.add(m_size8);    m_selectFontGroup.add(m_size6);    m_selectFontGroup.add(m_size4);    m_selectFontGroup.add(m_size2);    m_selectFontGroup.add(m_size1);        m_selectFont.add(m_size24);    m_selectFont.add(m_size22);    m_selectFont.add(m_size20);    m_selectFont.add(m_size18);    m_selectFont.add(m_size16);    m_selectFont.add(m_size14);    m_selectFont.add(m_size12);    m_selectFont.add(m_size10);    m_selectFont.add(m_size8);    m_selectFont.add(m_size6);    m_selectFont.add(m_size4);    m_selectFont.add(m_size2);    m_selectFont.add(m_size1);    m_size24.addItemListener(this);    m_size22.addItemListener(this);    m_size20.addItemListener(this);    m_size18.addItemListener(this);    m_size16.addItemListener(this);    m_size14.addItemListener(this);    m_size12.addItemListener(this);    m_size10.addItemListener(this);    m_size8.addItemListener(this);    m_size6.addItemListener(this);    m_size4.addItemListener(this);    m_size2.addItemListener(this);    m_size1.addItemListener(this);    /*      search_string = new JTextField(22);      search_win = new JDialog();      case_sen = new JRadioButton("Case Sensitive");      search_win.getContentPane().setLayout(null);      search_win.setSize(300, 200);       search_win.getContentPane().add(search_string);      search_win.getContentPane().add(case_sen);      search_string.setLocation(50, 70);      case_sen.setLocation(50, 120);      case_sen.setSize(100, 24);       search_string.setSize(100, 24);      //search_string.setVisible(true);      //case_sen.setVisible(true);      search_win.setVisible(true);    */    m_nodeMenu = new JPopupMenu();    /* A visualize choice for the node, may not be available. */    m_visualise = new JMenuItem("Visualize The Node");    m_visualise.setActionCommand("Visualize The Node");    m_visualise.addActionListener(this);    m_nodeMenu.add(m_visualise);    if (m_listener != null) {      m_remChildren = new JMenuItem("Remove Child Nodes");      m_remChildren.setActionCommand("Remove Child Nodes");      m_remChildren.addActionListener(this);      m_nodeMenu.add(m_remChildren);            m_classifyChild = new JMenuItem("Use Classifier...");      m_classifyChild.setActionCommand("classify_child");      m_classifyChild.addActionListener(this);      m_nodeMenu.add(m_classifyChild);            m_sendInstances = new JMenuItem("Add Instances To Viewer");      m_sendInstances.setActionCommand("send_instances");      m_sendInstances.addActionListener(this);      m_nodeMenu.add(m_sendInstances);                }      m_focusNode = -1;    m_highlightNode = -1;        addMouseMotionListener(this);    addMouseListener(this);      //repaint();    //frame_limiter.setInitialDelay();    m_frameLimiter.setRepeats(false);    m_frameLimiter.start();  }  /**   * Fits the tree to the current screen size. Call this after   * window has been created to get the entrire tree to be in view   * upon launch.   */  public void fitToScreen() {    getScreenFit(m_viewPos, m_viewSize);    repaint();  }  /**   * Calculates the dimensions needed to fit the entire tree into view.   */  private void getScreenFit(Dimension np, Dimension ns) {    int leftmost = 1000000, rightmost = -1000000;    int leftCenter = 1000000, rightCenter = -1000000, rightNode = 0;    int highest = -1000000, highTop = -1000000;    for (int noa = 0; noa < m_numNodes; noa++) {      calcScreenCoords(noa);      if (m_nodes[noa].m_center - m_nodes[noa].m_side < leftmost) {	leftmost = m_nodes[noa].m_center - m_nodes[noa].m_side;      }      if (m_nodes[noa].m_center < leftCenter) {	leftCenter = m_nodes[noa].m_center;      }            if (m_nodes[noa].m_center + m_nodes[noa].m_side > rightmost) {	rightmost = m_nodes[noa].m_center + m_nodes[noa].m_side;	        }      if (m_nodes[noa].m_center > rightCenter) {	rightCenter = m_nodes[noa].m_center;	rightNode = noa;      }	if (m_nodes[noa].m_top + m_nodes[noa].m_height > highest) {	  highest = m_nodes[noa].m_top + m_nodes[noa].m_height;	}	if (m_nodes[noa].m_top > highTop) {	  highTop = m_nodes[noa].m_top;	}    }        ns.width = getWidth();    ns.width -= leftCenter - leftmost + rightmost - rightCenter + 30;    ns.height = getHeight() - highest + highTop - 40;        if (m_nodes[rightNode].m_node.getCenter() != 0 	&& leftCenter != rightCenter) {	ns.width /= m_nodes[rightNode].m_node.getCenter();    }    if (ns.width < 10)      {	ns.width = 10;      }    if (ns.height < 10)      {	ns.height = 10;      }        np.width = (leftCenter - leftmost + rightmost - rightCenter) / 2 + 15;    np.height = (highest - highTop) / 2 + 20;  }  /**   * Performs the action associated with the ActionEvent.   *   * @param e the action event.   */  public void actionPerformed(ActionEvent e) {        //JMenuItem m = (JMenuItem)e.getSource();        if (e.getActionCommand() == null) {      if (m_scaling == 0) {	repaint();      }      else {	animateScaling(m_nViewPos, m_nViewSize, m_scaling);      }    }    else if (e.getActionCommand().equals("Fit to Screen")) {            Dimension np = new Dimension();      Dimension ns = new Dimension();      getScreenFit(np, ns);      animateScaling(np, ns, 10);          }    else if (e.getActionCommand().equals("Center on Top Node")) {            int tpx = (int)(m_topNode.getCenter() * m_viewSize.width);   //calculate      //the top nodes postion but don't adjust for where       int tpy = (int)(m_topNode.getTop() * m_viewSize.height);     //view is                        Dimension np = new Dimension(getSize().width / 2 - tpx, 				   getSize().width / 6 - tpy);            animateScaling(np, m_viewSize, 10);          }    else if (e.getActionCommand().equals("Auto Scale")) {      autoScale();  //this will figure the best scale value       //keep the focus on the middle of the screen and call animate    }    else if (e.getActionCommand().equals("Visualize The Node")) {      //send the node data to the visualizer       if (m_focusNode >= 0) {	Instances inst;	if ((inst = m_nodes[m_focusNode].m_node.getInstances()) != null) {	  VisualizePanel pan = new VisualizePanel();	  pan.setInstances(inst);	  JFrame nf = new JFrame();	  nf.setSize(400, 300);	  nf.getContentPane().add(pan);	  nf.show();	}	else {	  JOptionPane.showMessageDialog(this, "Sorry, there is no " + 					"availble Instances data for " +					"this Node.", "Sorry!",					JOptionPane.WARNING_MESSAGE); 	}      }      else {	JOptionPane.showMessageDialog(this, "Error, there is no " + 				      "selected Node to perform " +				      "this operation on.", "Error!",				      JOptionPane.ERROR_MESSAGE);       }    }    else if (e.getActionCommand().equals("Create Child Nodes")) {      if (m_focusNode >= 0) {	if (m_listener != null) {	  //then send message to the listener	  m_listener.userCommand(new TreeDisplayEvent	    (TreeDisplayEvent.ADD_CHILDREN, 	     m_nodes[m_focusNode].m_node.getRefer()));	}	else {	  JOptionPane.showMessageDialog(this, "Sorry, there is no " + 					"available Decision Tree to " +					"perform this operation on.",					"Sorry!", 					JOptionPane.WARNING_MESSAGE);	}      }      else {

⌨️ 快捷键说明

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