Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Пример 2.20.

Читайте также:
  1. V. Примерный образец теста, применяемого для промежуточной аттестации
  2. Web-контейнер, Servlet, JSP. Структура, назначение и пример сервлета или JSP.
  3. А вот чрезмерное употребление алкоголя действительно вызывает гинекомастию. Примерно четверо из 10 хронических алкоголиков имеют это заболевание в той или иной стадии развития.
  4. А. Здравомыслов.Примерно два года тому назад.
  5. Ая основа – Хаджури не видит разницы между нововведенцем, призывающим к своему нововведению, и не призывающим, и пример в этом он взял с Махмуда Хаддада.
  6. Будьте хорошим примером для своих детей
  7. Быть примером
  8. В наших примерах мы ни разу не рассматривали конструкторы классов, поэтому при создании экземпляров наших классов вызывался конструктор класса object.
  9. В приведенном примере нарушение синтезов пространственного гнозиса и обусловливает ряд следствий, что можно представить схематично.
  10. В только что приведенном вами примере с под­брасыванием монеты компьютерное моделирование

 

package ComponentTree.java;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.tree.*; /** * Этот класс является подклассом JTree, отображающих дерево * AWT или Swing, составляющих GUI. **/public class ComponentTree extends JTree { /** * Конструктор подготавливает для организации дерева TreeModel и * TreeCellRenderer objects for the tree. Эти классы * являются основными в приложении. **/ public ComponentTree(Component c) { super(new ComponentTreeModel(c)); setCellRenderer(new ComponentCellRenderer(getCellRenderer())); } /** * Класс TreeModel выстраивает данные по иерархии, которую JTree * отобразит. Интерпретируем иерархию контейнеров компонента * Component для отображения классом ComponentTree. В вершинах * дерева могут размещаться объекты любого типа, поддерживаемые * TreeModel. **/ static class ComponentTreeModel implements TreeModel { Component root; // Корневой объект дерева // Конструктор: запоминает корневой объект public ComponentTreeModel(Component root) { this.root = root; } // Возвращает корень дерева public Object getRoot() { return root; } // Является ли эта вершина концевой? (листом дерева) // Всякая вершина, не являющаяся контейнером, является листом, // так как не содержит дочерних элементов. Пустые // контейнеры также являются листьями. public boolean isLeaf(Object node) { if (!(node instanceof Container)) return true; Container c = (Container) node; return c.getComponentCount() == 0; } // Сколько дочерних элементов у вершины? public int getChildCount(Object node) { if (node instanceof Container) { Container c = (Container) node; return c.getComponentCount(); } return 0; } // Возвращает заданный индексом дочерний элемент узла parent. public Object getChild(Object parent, int index) { if (parent instanceof Container) { Container c = (Container) parent; return c.getComponent(index); } return null; } // Возвращает индекс вершины child по отношению к узлу parent. public int getIndexOfChild(Object parent, Object child) { if (!(parent instanceof Container)) return -1; Container c = (Container) parent; Component[] children = c.getComponents(); if (children == null) return -1; for(int i = 0; i < children.length; i++) { if (children[i] == child) return i; } return -1; } // Этот метод редактирует дерево данных, // поэтому здесь не реализован. public void valueForPathChanged(TreePath path, Object newvalue) {} // События не генерируются, // поэтому методы регистрации слушателей не реализованы public void addTreeModelListener(TreeModelListener l) {} public void removeTreeModelListener(TreeModelListener l) {} } /** * A TreeCellRenderer отображает вершины дерева. Принятый по * умолчанию renderer отображает объект в вершине в виде toString(). * Метод Component.toString() возвращает длинные строки, * поэтому промежуточная реализация * TreeCellRenderer преобразует объекты Component в * требуемые строковые значения. **/ static class ComponentCellRenderer implements TreeCellRenderer { TreeCellRenderer renderer; // Отображатель данных // Конструктор: запоминает данные public ComponentCellRenderer(TreeCellRenderer renderer) { this.renderer = renderer; } // Метод TreeCellRenderer. // Вычисляется отображаемая строка public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { String newvalue = value.getClass().getName(); // Тип компонента String name = ((Component)value).getName(); // Имя компонента if (name!= null) newvalue += " (" + name + ")"; // пока не null // Применяем отображатель данных return renderer.getTreeCellRendererComponent(tree, newvalue, selected, expanded, leaf, row, hasFocus); } } /** * Метод main() демонстрирует класс ComponentTree: он * помещает ComponentTree в окно Frame, и отображает * иерархию собственного GUI. Добавление TreeSelectionListener * позволяет отображать дополнительную информацию о компоненте **/ public static void main(String[] args) { // Создаем демонстрационное окно и обрабатываем запрос на его // закрытие JFrame frame = new JFrame("ComponentTree Demo"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // Создаем полосу прокрутки и строку сообщений, размещаем // их по центру и внизу окна соответственно. JScrollPane scrollpane = new JScrollPane(); final JLabel msgline = new JLabel(" "); frame.getContentPane().add(scrollpane, BorderLayout.CENTER); frame.getContentPane().add(msgline, BorderLayout.SOUTH); // Создаем объект ComponentTree, выбирая окно первого уровня, // в качестве компонента, шрифт, // дерево которого должно отображаться. JTree tree = new ComponentTree(frame); tree.setFont(new Font("SansSerif", Font.BOLD, 12)); // Допускается выбор только одной вершины tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); // Добавляем слушатель, контролирующий // изменения состояния выбора в дереве. tree.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { // Выбор данных по дереву описывает путь "path" // Интересна только последняя вершина пути TreePath path = e.getPath(); Component c = (Component) path.getLastPathComponent(); // Выбрав компонент, // отображаем информацию о нем if (c.isShowing()) { Point p = c.getLocationOnScreen(); msgline.setText("x: " + p.x + " y: " + p.y + " width: " + c.getWidth() + " height: " + c.getHeight()); } else { msgline.setText("component is not showing"); } } }); // Установив дерево, помещаем его в панель прокрутки scrollpane.setViewportView(tree); // Устанавливаем размеры главного окна и отображаем его. frame.setSize(600, 400); frame.setVisible(true); }}

 




Дата добавления: 2015-09-11; просмотров: 25 | Поможем написать вашу работу | Нарушение авторских прав

Практическое занятие № 6 | Практическое занятие № 7 | Пример 2.1. | Пример 2.2. | Глава 2.2. Графические интерфейсы пользователя в Java | Компоненты. | Пример 2.8. | Пример 2.15. | Пример 2.16. | Пример 2.18. |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.012 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав