Логин:   Пароль:






Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100
Rambler's Top100

Java: ПримерыПример реализации раскрывающихся списков, наподобие проводника Windows(Использование класса JTree)

Пример реализации раскрывающихся списков, наподобие проводника Windows(Использование класса JTree)

Приведу два примера созданных с помощью двух инструментов разработки JBuilder 5 и JСreator при помощи имеющихся стандартных заготовок application.

В JBuilder 5

Создаются два файла: класс содержащий метод main - Application1 и класс FrameTree

Application1


package sampletree;
import javax.swing.UIManager;
import java.awt.*;
public class Application1
{
 boolean packFrame = false;
 public Application1()
 {
  FrameTree frame = new FrameTree();
  if (packFrame)
  {
   frame.pack();
  }
  else
  {
   frame.validate();
  }
  Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  Dimension frameSize = frame.getSize();
  if (frameSize.height > screenSize.height)
  {
   frameSize.height = screenSize.height;
  }
  if (frameSize.width > screenSize.width)
  {
   frameSize.width = screenSize.width;
  }
  frame.setLocation((screenSize.width - frameSize.width) / 2, 
                 (screenSize.height - frameSize.height) / 2);
  frame.setVisible(true);
 }
 public static void main(String[] args)
 {
  try
  {
   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
  new Application1();
 }
}

FrameTree


package sampletree;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
public class FrameTree extends JFrame
{
 DefaultMutableTreeNode level0 =  new DefaultMutableTreeNode("Корень дерева");
 JTree jt = new JTree(level0);

 public FrameTree()
 {
  enableEvents(AWTEvent.WINDOW_EVENT_MASK);
  try
  {
   init();
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }
 private void init() throws Exception
 {
  this.setSize(new Dimension(400, 300));
  this.setTitle("Tree Sample");
  DefaultMutableTreeNode level1a;
  DefaultMutableTreeNode level1b;
  DefaultMutableTreeNode level1c;
  level1a = new DefaultMutableTreeNode("Первая ветвь");
  DefaultMutableTreeNode level1a_1=new DefaultMutableTreeNode("Ветвь первой ветви");
  level1a_1.add(new DefaultMutableTreeNode("Отросточек"));
  level1a.add(level1a_1);
  level1a.add(new DefaultMutableTreeNode("Отросточек"));
  level0.add(level1a);
  level1b = new DefaultMutableTreeNode("Вторая ветвь");
  DefaultMutableTreeNode level1b_1=new DefaultMutableTreeNode("Первая ветвь второй ветви");
  level1b_1.add(new DefaultMutableTreeNode("Первый отросточек"));
  level1b_1.add(new DefaultMutableTreeNode("Второй отросточек"));
  level1b.add(level1b_1);
  DefaultMutableTreeNode level1b_2=new DefaultMutableTreeNode("Вторая ветвь второй ветви");
  level1b_2.add(new DefaultMutableTreeNode("Отросточек"));
  level1b.add(level1b_2);
  level0.add(level1b);
  level1c = new DefaultMutableTreeNode("Отросточек");
  level0.add(level1c);
  this.getContentPane().add(jt);
 }
 protected void processWindowEvent(WindowEvent e)
 {
  super.processWindowEvent(e);
  if (e.getID() == WindowEvent.WINDOW_CLOSING)
  {
   System.exit(0);
  }
 }
}

В JСreator

Всё делается в одном файле:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
class TreeSample extends JFrame
{
 DefaultMutableTreeNode level0 =  new DefaultMutableTreeNode("Корень дерева");
 JTree jt = new JTree(level0);
 public TreeSample() 
 {
  addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    dispose();
    System.exit(0);
   }
  });
  init();
 }
 public static void main(String args[])
 {
  System.out.println("Starting TreeApplic...");
  TreeSample mainFrame = new TreeSample();
  mainFrame.setSize(400, 300);
  mainFrame.setTitle("Tree sample");
  mainFrame.setVisible(true);
 }
 public void init()
 {
  this.setSize(new Dimension(400, 300));
  this.setTitle("Tree Sample");
  DefaultMutableTreeNode level1a;
  DefaultMutableTreeNode level1b;
  DefaultMutableTreeNode level1c;
  level1a = new DefaultMutableTreeNode("Первая ветвь");
  DefaultMutableTreeNode level1a_1=new DefaultMutableTreeNode("Ветвь первой ветви");
  level1a_1.add(new DefaultMutableTreeNode("Отросточек"));
  level1a.add(level1a_1);
  level1a.add(new DefaultMutableTreeNode("Отросточек"));
  level0.add(level1a);
  level1b = new DefaultMutableTreeNode("Вторая ветвь");
  DefaultMutableTreeNode level1b_1=new DefaultMutableTreeNode("Первая ветвь второй ветви");
  level1b_1.add(new DefaultMutableTreeNode("Первый отросточек"));
  level1b_1.add(new DefaultMutableTreeNode("Второй отросточек"));
  level1b.add(level1b_1);
  DefaultMutableTreeNode level1b_2=new DefaultMutableTreeNode("Вторая ветвь второй ветви");
  level1b_2.add(new DefaultMutableTreeNode("Отросточек"));
  level1b.add(level1b_2);
  level0.add(level1b);
  level1c = new DefaultMutableTreeNode("Отросточек");
  level0.add(level1c);
  this.getContentPane().add(jt);
 }
}

Рассматривать полностью весь пример, мы не будем, а рассмотрим саму реализацию иерархической системы данных в виде дерева.

Первые две строчки


 DefaultMutableTreeNode level0 =  new DefaultMutableTreeNode("Корень дерева");
 JTree jt = new JTree(level0);

DefaultMutableTreeNode - узел общего назначения в структуре данных дерева.
JTree - дерево отображающие иерархическую систему данных.
Этими манипуляциями мы создаём дерево с одной ветвью(узлом).

Далее создаём ещё дополнительно три узла для одновременной манипуляции над ними.


  DefaultMutableTreeNode level1a;
  DefaultMutableTreeNode level1b;
  DefaultMutableTreeNode level1c;

Создаём первый узел(первую ветвь).


  level1a = new DefaultMutableTreeNode("Первая ветвь");

Создаём под узел.


  DefaultMutableTreeNode level1a_1=new DefaultMutableTreeNode("Ветвь первой ветви");

Создаём в под узеле конечный узел.


  level1a_1.add(new DefaultMutableTreeNode("Отросточек"));

Добавляем под узел в первый узел.


  level1a.add(level1a_1);

Создаём в первом узле ещё и конечный узел.


  level1a.add(new DefaultMutableTreeNode("Отросточек"));

Добавляем весь первый узел в корневой узел.


  level0.add(level1a);

Проделываем похожие действия со вторым узлом, где в отличии от первого, вместо конечного узла добавляется узел содержаший в себе конечный узел.


  level1b = new DefaultMutableTreeNode("Вторая ветвь");
  DefaultMutableTreeNode level1b_1=new DefaultMutableTreeNode("Первая ветвь второй ветви");
  level1b_1.add(new DefaultMutableTreeNode("Первый отросточек"));
  level1b_1.add(new DefaultMutableTreeNode("Второй отросточек"));
  level1b.add(level1b_1);
  DefaultMutableTreeNode level1b_2=new DefaultMutableTreeNode("Вторая ветвь второй ветви");
  level1b_2.add(new DefaultMutableTreeNode("Отросточек"));
  level1b.add(level1b_2);
  level0.add(level1b);

Потом также добавляем конечный узел в корневой узел.


  level1c = new DefaultMutableTreeNode("Отросточек");
  level0.add(level1c);

И теперь всё полученное дерево приспосабливаем на форму.


  this.getContentPane().add(jt);

JAR-архивы:
SampleTree.jar
TreeSample.jar

java-файлы:
Application1.java
FrameTree.java
TreeSample.java


Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 11

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/books/show2b.php on line 30
Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 91

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/news/worldnews.php on line 95