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


Автор: Tamara 7.12.2005, 17:37
подскажите пожалуйста. У меня есть JTree. Мне нужно, чтобы любая ветка раскрывалась только тогда, когда я дважды нажму на крестик(не на сам узел!).
Спасибо

Автор: Metal_Heart 8.12.2005, 10:22
Tamara, поищи, пожалуйста на форуме, это уже обсуждали, как мне кажется

Автор: LSD 8.12.2005, 11:53
Есть такая штука VetoableChangeListener, это слушатель который вызывается перед срабатыванием события, и может его запретить посредством выкидывания специального исключения.
Вот как можно раскрывать дерево по 2-му щелчку:
Код
public class TreeTest extends JFrame
{
  private boolean allowExpand = false;

  public TreeTest()
  {
    super("Tree test");
    getContentPane().add(new JScrollPane(createTree()));
    setSize(640, 480);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setLocationRelativeTo(null);
  }

  private JTree createTree()
  {
    JTree tree = new JTree();
    tree.addMouseListener(new MouseAdapter()
    {
      public void mouseClicked(MouseEvent e)
      {
        JTree tree = (JTree) e.getSource();
        if(e.getClickCount() >= 2)
        {
          allowExpand = true;
          tree.expandPath(tree.getClosestPathForLocation(e.getX(), e.getY()));
          allowExpand = false;
        }
      }
    });
    tree.addTreeWillExpandListener(new TreeWillExpandListener()
    {
      public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException
      {
        if(!allowExpand)
          throw new ExpandVetoException(event);
      }

      public void treeWillCollapse(TreeExpansionEvent event) throws ExpandVetoException
      {
      }
    });
    return tree;
  }

  public static void main(String[] args)
  {
    TreeTest treeTest = new TreeTest();
    treeTest.setVisible(true);
  }
}

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