Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Строка инициализации для конт. меню в дереве


Автор: XClan 2.2.2004, 11:34
Как присвоить команду для "Stop", "Start", "Status" в конт.меню jTree?
Имеется :
Код

       m_popup = new JPopupMenu();
       m_popup.add("Stop");
       m_popup.add("Start");
       m_popup.add("Status");
       jTree1.add(m_popup);
       jTree1.setModel(treeModel);
       jTree1.setAutoscrolls(true);
       jTree1.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mousePressed(java.awt.event.MouseEvent evt) {
               jTree1MousePressed(evt);
           }
           public void mouseReleased(java.awt.event.MouseEvent evt) {
               jTree1MouseReleased(evt);
           }
       });


Автор: AntonSaburov 3.2.2004, 14:51
Лови примерчик:

Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class My extends JFrame
{
 JTree m_tree = null;
 JPopupMenu m_popup = null;

 public My()
 {
   getContentPane().setLayout(new BorderLayout());
 
   m_tree = new JTree();

   m_popup = new JPopupMenu();
   m_popup.add(new AbstractAction("Start") {
       public void actionPerformed(ActionEvent e) {
           JOptionPane.showMessageDialog(null, "Start");
       }
   });
   m_popup.add(new AbstractAction("Stop") {
       public void actionPerformed(ActionEvent e) {
           JOptionPane.showMessageDialog(null, "Stop");
       }
   });
   m_popup.add(new AbstractAction("Pause") {
       public void actionPerformed(ActionEvent e) {
           String s = JOptionPane.showInputDialog(null, "Pause");
           if(s==null)
               System.out.println("Cancel pressed");
       }
   });
   m_tree.add(m_popup);
   m_tree.addMouseListener(new PopupTrigger());
   getContentPane().add(new JScrollPane(m_tree));
   setBounds(100,100,200,300);
 }

 class PopupTrigger extends MouseAdapter
 {
   public void mouseReleased(MouseEvent e)
   {
     if(e.isPopupTrigger())
     {
       int x = e.getX();
       int y = e.getY();
       m_popup.show(m_tree, x, y);
     }
   }
 }


 public static void main(String[] args)
 {
   My my = new My();
   my.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   my.setVisible(true);
 }
}

Автор: ElectricalStorm 4.2.2004, 13:15
AntonSaburov взял Ваш пример посмотреть
все работает но ... я понять не могу откуда заполненое дерево
ведь нету ничего похожего на
Код

DefaultMutableTreeNode node  = new DefaultMutableTreeNode("Node ");
parent.add(node);


скажите откуда ? smile.gif

Автор: XClan 4.2.2004, 13:57
Это я взял у AntonSaburov пример..... тут кусок для примера, чтобы я понял... smile.gif

Автор: AntonSaburov 4.2.2004, 14:18
Цитата
скажите откуда ?

Если дерево изначально ничем не заполнять, то оно заполняется по умолчанию тем, что видно в примере. Почему сие сделано - к разработчикам. Но это хорошо видно при просмотре исходников

Код

/**
* Creates and returns a sample <code>TreeModel</code>.
* Used primarily for beanbuilders to show something interesting.
*
* @return the default <code>TreeModel</code>
*/
protected static TreeModel getDefaultTreeModel()
{
   DefaultMutableTreeNode      root = new DefaultMutableTreeNode("JTree");
   DefaultMutableTreeNode      parent;

   parent = new DefaultMutableTreeNode("colors");
   root.add(parent);
   parent.add(new DefaultMutableTreeNode("blue"));
   parent.add(new DefaultMutableTreeNode("violet"));
   parent.add(new DefaultMutableTreeNode("red"));
   parent.add(new DefaultMutableTreeNode("yellow"));

   parent = new DefaultMutableTreeNode("sports");
   root.add(parent);
   parent.add(new DefaultMutableTreeNode("basketball"));
   parent.add(new DefaultMutableTreeNode("soccer"));
   parent.add(new DefaultMutableTreeNode("football"));
   parent.add(new DefaultMutableTreeNode("hockey"));

   parent = new DefaultMutableTreeNode("food");
   root.add(parent);
   parent.add(new DefaultMutableTreeNode("hot dogs"));
   parent.add(new DefaultMutableTreeNode("pizza"));
   parent.add(new DefaultMutableTreeNode("ravioli"));
   parent.add(new DefaultMutableTreeNode("bananas"));
   return new DefaultTreeModel(root);
}

/**
* Returns a <code>JTree</code> with a sample model.
* The default model used by the tree defines a leaf node as any node
* without children.
*
* @see DefaultTreeModel#asksAllowsChildren
*/
public JTree()
{
   this(getDefaultTreeModel());
}

Автор: ElectricalStorm 4.2.2004, 14:24
спасибо все понятно smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)