![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Olesya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
Подскажите, пожалуйста, как сделать так, чтобы при нажатии на плюсик в дереве ветка открывалась до тех пор, пока не появится развилка, т.е. "если на этом уровне только один элемент, то открывайся дальше"
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Если честно - не понял. Надо открыть все дерево целиком, или только тот уровень, на котором нажали плюсик ?
|
|||
|
||||
| Olesya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
надо открыть тот уровень, на котором нажали плюсик. но если в этом уровне только один ребенок, то и его открыть тоже. и так до конца
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
А если два и больше, то открывать не надо ?
|
|||
|
||||
| Olesya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
тоже надо, только детей его не надо раскрывать в этом случае
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Ну тогда надо рекурсивно спуститься по дереву, на каждом уровне проверяя сколько у него детей.
И сделать JTree.expandPath(...) для конечного узла. Думаю, что надо посмотреть - http://java.sun.com/docs/books/tutorial/ui...nents/tree.html |
|||
|
||||
| Olesya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
спасибо большое, все получилось. повесила на дерево TreeExpansionListener
|
|||
|
||||
| Olesya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
столкнулась с проблемой при использовании JTree.expandPath(...).
public void expandPath(TreePath path) Ensures that the node identified by the specified path is expanded and viewable. If the last item in the path is a leaf, this will have no effect. а мне надо, чтобы и в таком случае он тоже отработал... |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
Тогда просто надо выкинуть последний элемент из пути. -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Olesya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
точно! всем спасибище!
|
|||
|
||||
| Antuanet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
Privet Olesja,
vot ja skinu tebe primer JTree nadejus tebe pomojet. Tyt ti uvidesh 3 Classa . Udachi //class Simple Tree package SwingProjekt; import java.awt.*; import javax.swing.*; import javax.swing.tree.*; public class SimpleTree extends JFrame { public static void main(String[] args) { new SimpleTree(); } public SimpleTree() { super("Creating a Simple JTree"); WindowUtilities.setNativeLookAndFeel(); addWindowListener(new ExitListener()); Container content = getContentPane(); Object[] hierarchy = { "javax.swing", "javax.swing.border", "javax.swing.colorchooser", "javax.swing.event", "javax.swing.filechooser", new Object[] { "javax.swing.plaf", "javax.swing.plaf.basic", "javax.swing.plaf.metal", "javax.swing.plaf.multi" }, "javax.swing.table", new Object[] { "javax.swing.text", new Object[] { "javax.swing.text.html", "javax.swing.text.html.parser" }, "javax.swing.text.rtf" }, "javax.swing.tree", "javax.swing.undo" }; DefaultMutableTreeNode root = processHierarchy(hierarchy); JTree tree = new JTree(root); content.add(new JScrollPane(tree), BorderLayout.CENTER); setSize(275, 300); setVisible(true); } private DefaultMutableTreeNode processHierarchy(Object[] hierarchy) { DefaultMutableTreeNode node = new DefaultMutableTreeNode(hierarchy[0]); DefaultMutableTreeNode child; for(int i=1; i<hierarchy.length; i++) { Object nodeSpecifier = hierarchy[i]; if (nodeSpecifier instanceof Object[]) // Ie node with children child = processHierarchy((Object[])nodeSpecifier); else child = new DefaultMutableTreeNode(nodeSpecifier); // Ie Leaf node.add(child); } return(node); } } 2. //class WindowUtilities package SwingProjekt; import javax.swing.*; import java.awt.*; /** A few utilities that simplify using windows in Swing. * 1998-99 Marty Hall, http://www.apl.jhu.edu/~hall/java/ */ public class WindowUtilities { /** Tell system to use native look and feel, as in previous * releases. Metal (Java) LAF is the default otherwise. */ public static void setNativeLookAndFeel() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { System.out.println("Error setting native LAF: " + e); } } public static void setJavaLookAndFeel() { try { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch(Exception e) { System.out.println("Error setting Java LAF: " + e); } } public static void setMotifLookAndFeel() { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); } catch(Exception e) { System.out.println("Error setting Motif LAF: " + e); } } /** A simplified way to see a JPanel or other Container. * Pops up a JFrame with specified Container as the content pane. */ public static JFrame openInJFrame(Container content, int width, int height, String title, Color bgColor) { JFrame frame = new JFrame(title); frame.setBackground(bgColor); content.setBackground(bgColor); frame.setSize(width, height); frame.setContentPane(content); frame.addWindowListener(new ExitListener()); frame.setVisible(true); return(frame); } /** Uses Color.white as the background color. */ public static JFrame openInJFrame(Container content, int width, int height, String title) { return(openInJFrame(content, width, height, title, Color.white)); } /** Uses Color.white as the background color, and the * name of the Container's class as the JFrame title. */ public static JFrame openInJFrame(Container content, int width, int height) { return(openInJFrame(content, width, height, content.getClass().getName(), Color.white)); } } 3. // class ExitListener import java.awt.*; import java.awt.event.*; /** A listener that you attach to the top-level Frame or JFrame of * your application, so quitting the frame exits the application. * 1998-99 Marty Hall, http://www.apl.jhu.edu/~hall/java/ */ public class ExitListener extends WindowAdapter { public void windowClosing(WindowEvent event) { System.exit(0); } } |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |