Афоризм
Большому кораблю – большие в трюме крысы.
Наталья Резник
Последние статьи

 • Активности Android
Многоэкранные Android приложения
 • Fragment dynamic
Динамическая загрузка фрагментов в Android
 • Fragment lifecycle
Жизненный цикл Fragment'ов в Android
 • Fragment example
Пример Fragment'ов в Android
 • Data Binding
Описание и пример Data Binding
 • Пример MVVM
Пример использования MVVM в Android
 • Компонент TreeTable
Описание компонента TreeTable для Swing
 • Пример TreeTable
Пример использования TreeTable
 • Хранилища Android
Внутренние и внешние хранилища данных
 • Пример SQLite
Пример использования SQLite в Android
 • WebSocket
Описание и пример реализации WebSocket
 • Визуальные компоненты
Улучшен компонент выбора даты из календаря
 • Анимация jQuery
Описание и примеры анимации элементов DOM
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698
в помощь разработчикам Swing-приложений

Описание компонента дерева Tree

API (Application Programmer Interface) визуального компонента дерева Tree базового модуля base-gui включает интерфейсы и классы пакета org.jabricks.basegui.tree, представленные в следующей таблице :

ITree интерфейс дерева Tree, API
ITreeListener интерфейс, включающий callback-метод слушателя Tree
TreeRecord базовый класс представления записей в дереве Tree
Tree компонент Tree, реализующий (implements) функции интерфейса ITree

Компонент org.jabricks.basegui.tree.Tree позволяет представить в интерфейсе приложения иерархическую многоуровневую структуру записей, основой которых является базовый класс TreeRecord. API дерева (ITree) позволяет добавлять, обновлять и удалять записи в дереве. При выделении записи в дереве вызывается callback-метод интерфейса ITreeListener.

Конструкторы класса Tree

Компонент дерева Tree имеет два конструктора :

public Tree();
public Tree(final ITreeListener parent);

Во втором конструкторе определяется родитель (parent), реализующий интерфейс ITreeListener. При выделении записи в компоненте дерева вызывается метод интерфейса onClickNode, в котором родителю передается объект выделенной в дереве записи.

Листинг интерфейса ITree

В листинге представлены методы управления деревом :

import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JTree;
import javax.swing.tree.TreeNode;

public interface ITree
{
    // Метод получения JTree в оболочке JScrollPane
    public JComponent asWidget();

    // Метод получения дерева JTree
    public JTree getTree ();

    // Реакция на количество нажатий клавишей мыши
    public void  setClickCount (final int cnt);
    public int   getClickCount();

    // Метод получения выделенной записи
    public Object  getSelectedNodeObject();

    // Метод получения выделенного узла дерева
    public TreeNode  getSelectedNode();

    // Методы управления записями
    public void  addNodeObject    (final Object   object);
    public void  updateNodeObject (final TreeNode   node);
    public void  deleteNodeObject (final TreeNode   node);

    // Метод загрузки в дерево набора данных
    public void  loadData  (List<TreeRecord> list);

    // Методы определения иконок для записей
    public void  setLeafIcon    (final ImageIcon image);
    public void  setClosedIcon  (final ImageIcon image);
    public void  setOpenIcon    (final ImageIcon image);
}

asWidget ()
Метод возвращает дерево JTree, обернутое в скроллинг JScrollPane, для размещения компонента в интерфейсе. Полосы прокрутки появляются в дереве автоматически, когда записи выходят за пределы видимости компонента.

getTree ()
Метод возвращает дерево JTree.

setClickCount (int)
Метод определения количества нажатий клавишей мыши (1 или 2) для вызова родительского callback-метода onClickNode.

getSelectedNodeObject ()
Метод возвращает объект выделенной записи дерева. Компонент Tree хранит объекты в записях иерархической структуры дерева.

getSelectedNode ()
Метод возвращает выделенный узел дерева типа TreeNode.

addNodeObject (Object)
Метод добавления нового объекта в дерево. Объект будет дочерним по отношению к выделенному узлу.

updateNodeObject (TreeNode)
Метод обновления узла в дереве. После обновления записи (объекта) необходимо обновить соответствующий узел в дереве, если обновление касается текста представления записи.

deleteNodeObject (TreeNode)
Метод удаления записи из дерева. Удаляются также все дочерние записи. Чтобы не допустить удаление узловой записи дерева, необходимо проверить наличие дочерних записей. Для этого используйте метод getChildCount() класса TreeNode.

loadData (List<TreeRecord>)
Метод загрузки в дерево набора записей. Если в дереве имеются записи, то они будут удалены.

setLeafIcon (ImageIcon)
Метод представления изображения в отдельной записи (leaf), не имеющей дочерних. По умолчанию дерево использует свое изображение. Данный метод позволяет переопределить изображение по умолчанию.

setClosedIcon, setOpenIcon
Методы представления изображений (свернутое, развернутое) в узловых записях, имеющие дочерние. По умолчанию дерево использует свои изображения. Данные методы позволяют переопределить изображения по умолчанию.

Листинг интерфейса ITreeListener

Интерфейс ITreeListener включает единственный метод onClickNode, который должен быть переопределен в родительском классе, реализующим данный интерфейс. Данный метод вызывается каждый раз при выделении какой-либо записи в дереве. Таким образом, родительский класс получает информацию о выделенном в дереве объекте, которую может соответствующим образом сразу же обработать.

public interface ITreeListener 
{
    public void onClickNode (final TreeRecord node);
}

Класс TreeRecord

Базовый класс TreeRecord включает 3 поля (идентификатор записи id, идентификатор родительской записи pid и наименование записи name) и методы Get/Set для управления их значениями. Для представления в интерфейсе дерева Tree наименования записи используется метод toString :

public class TreeRecord {
    protected  int     id;
    protected  int     pid;
    protected  String  name;

    public TreeRecord(){}

    public TreeRecord(final int id, int pid, String name) {
        this.id   =   id;
        this.pid  =  pid;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getPid() {
        return pid;
    }

    public void setPid(int pid) {
        this.pid = pid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String toString() {
        return name;
    }
}

Примечание : в методе toString можно определить собственное текстовое представление записи в дереве.

Базовый класс записи TreeRecord может быть расширен включением дополнительных полей и методов для отображения в интерфейсе дерева, как это представлено в примере.

Пример использования Tree

Использование модуля base-gui для иерархического представления набора записей в дереве Tree в обычном java-приложении рассмотрено на странице описания примера дерева. В примере демонстрируются методы добавления/удаления записей и определения собственного изображения записей-листьев.

  Рейтинг@Mail.ru