Лекции (989962), страница 57

Файл №989962 Лекции (Лекции) 57 страницаЛекции (989962) страница 572015-08-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 57)

Менеджер расположенияАпплет может содержать такие элементы управления, как кнопки, флажки, раскрывающиеся списки и т.д.Подробнее об этом будет сказано ниже. Однако, прежде чем переходить к описанию синтаксиса этихэлементов, необходимо рассмотреть понятие "менеджер расположения".Для различных компьютеров трудно заранее предсказать точные координаты того места, где долженнаходится элемент управления. Действительно, если бы положение элементов управления жестко задавалось в абсолютных координатах, то при запуске в Windows 95 с дисплеем 640x480 апплета, рассчитанногона X-терминал с разрешением 1280x1024, получилось бы неизвестно что.

Поэтому размещением элементовуправления в апплете занимается менеджер расположения, которому программист только указывает, как те Ляхевич А.Г., 2000 - 2002 годили иные элементы должны быть расположены по отношению к другим элементам. Точные значениякоординат вычисляет сам менеджер. Существуют пять различных типов менеджеров расположения:1) Flow Layout (последовательное расположение).

Располагает элементы последовательно слеванаправо, пока они помещаются в одном ряду. Затем переходит на следующий ряд, и так далее. Этотменеджер установлен в апплете по умолчанию.2) Grid Layout (табличное расположение). Представляет контейнер как таблицу, состоящую из клетокодинакового размера. Располагает элементы в клетках таблицы, начиная с левого верхнего угла ипродолжая вправо и вниз, подобно последовательному расположению. Различие между последовательным и табличном расположением состоит в том, что при табличном расположении четкозадается число элементов в строке (или столбце), а всем элементам отводятся клетки одинаковойформы и размера.3) Border Layout (полярное расположение).

Рассматривает апплет как лимб компаса. При добавлениинового элемента менеджеру расположения сообщается, что элемент следует поместить в одну из пятиобластей: "север" (North), "юг" (South), "запад" (West), "восток" (East) и "центр" (Center).

В каждойобласти может быть не более одного элемента. Точные координаты вычисляются, исходя изотносительных размеров элементов.4) Card Layout (блокнотное расположение). Все элементы, входящие в контейнер, рассматриваются какстранички блокнота. В каждый данный момент видна только одна из страничек.5) Grid Bag Layout (ячеистое расположение).

Наиболее универсальный менеджер расположения и в тоже время наиболее запутанный. Менеджер Grid Bag Layout разделяет контейнер на клетки равногоразмера, как и GridLayout. Отличие GridBagLayout состоит в том, что он сам определяет, сколькотребуется строк и столбцов, а также позволяет элементу занимать при необходимости более однойклетки. Область, занимаемая элементом, называется его ячейкой (display area).

Прежде чем добавитьэлемент в апплет, надо задать менеджеру GridBagLayout набор "пожеланий" насчет того, где следуетразмещать элемент. Эти пожелания выдаются в форме объекта GridBagConstraints, который имеетследующие свойства:- gridx и gridy. Координаты клетки, куда будет помещен следующий элемент (если он будетзанимать более одной клетки, это координаты левой верхней занимаемой клетки). Левый верхнийугол в объекте GridBagLayout имеет координаты (0, 0).

По умолчанию переменные gridx и gridyимеют значение GridBagConstraints.RELATIVE. Для gridx это означает клетку непосредственносправа от последнего добавленного элемента, а для gridy — клетку, примыкающую к последнемуэлементу снизу.- gridwidth и gridheight. Число клеток, которое занимает компонент по горизонтали и вертикали.По умолчанию оба эти значения равны 1. Если требуется, чтобы компонент был последним встроке, следует задать gridwidth равным GridBagConstraint.REMAINDER (тоже самое дляgridheight означало бы, что компонент является последним в столбце). Если компонент долженстоять предпоследним в строке или столбце, следует задать GridBagConstraint.RELATIVE.- fill.

Сообщает как поступить, если элемент меньше, чем предоставленная ему ячейка. По умолчанию используется значение GridBagConstraint.NONE, которое оставляет размер элемента безизменений. GridBagConstraint .HORIZONTAL заставляет растянуть элемент по горизонтали доразмеров ячейки, без изменения вертикального размера.

GridBagConstraint.VERTICAL заставляетрастянуть элемент по вертикали до размеров ячейки без изменения горизонтального размера.GridBagConstraint.BOTH указывает, что элемент следует растянуть в обоих направлениях доразмеров ячейки.- ipadx и ipady. Указывает, сколько пикселов добавить к размерам компонента по осям х и у.Добавление происходит с каждой стороны элемента, так что параметр ipadx, равный 4, приведет кувеличению размера элемента на четыре пиксела вправо и на четыре влево.

По умолчаниюиспользуется значение 0.- insets. Экземпляр класса Insets. Указывает, сколько места нужно оставить между границамиэлемента и краями ячейки. Другими словами, параметр insets создает "демаркационную линию",окружающую элемент. В примере, приведенном ниже, создается экземпляр класса Insets сотступами в 20 пикселей со всех сторон: Insets myInsets = new Insets (20,20,20,20);- anchor. Используется тогда, когда размеры элемента меньше размеров его ячейки.

Этот параметруказывает, где должен располагаться элемент в пределах ячейки. По умолчанию применяетсяGridBagConstraint.CENTER (разместить в центре), но есть еще несколько значений:GridbagConstraints.NORTH (север), GridBagConstraints.NORTHEAST (северо-восток),GridBagConstraints.EAST (восток), GridBagConstraints.SOUTHEAST (юго-восток),GridBagConstraints.SOUTH (юг), GridBagConstraints.SOUTHWEST (юго-запад),GridBagConstraints.WEST (запад), GridBagConstraints.NORTHWEST (северо-запад).- weightx и weighty.

Применяются для задания относительных размеров элементов. Например,элемент с параметром weightx, равным 2.0, занимает по горизонтали вдвое большее пространство,чем элемент с weightx, равным 1.0. Поскольку это относительные значения, неважно, имеют ли Ляхевич А.Г., 2000 - 2002 годвсе элементы значение параметров 1.0 или 3.0. Следует задать эти параметры хотя бы для одногокомпонента по каждому из направлений, так как иначе менеджер GridBagLayout сожмет всекомпоненты к центру апплета.Примеры задания менеджеров расположения:FlowLayout myManager = new FlowLayout( ); // создание менеджера типа FlowLayoutFlowLayout myManager = new FlowLayout(FlowLayout.RIGHT,10,5); /* создание менеджера FlowLayout,выравнивание по правому краю, расстояние между элементамипо горизонтали – 10 пикселей, вертикали – 5 пикселей */setLayout (myManager); // активизация менеджера myManagerGridLayout myManager = new GridLayout (0, 4); // 4 колонки для элементов, число строк - автоматическиGridLayout myManager = new GridLayout (4, 0); // 4 строки для элементов, число колонок – автоматическиGridLayout myManager = new GridLayout (4, 2); /* 4 строки для элементов, число колонок игнорируется иопределяется автоматически */GridLayout myManager = new GridLayout (4, 0, 10, 5); /* расстояние между элементами по горизонтали – 10пикселей, вертикали – 5 пикселей */setLayout (myManager); // активизация менеджера myManagerBorderLayout myManager = new BorderLayout ( ); // создание менеджера типа BorderLayoutBorderLayout myManager = new BorderLayout (10,5); /* установка менеджера BorderLayout, промежутокмежду элементами по горизонтали – 10, по вертикали – 5 пикселей.

*/Button myButton = new Button ("Нажми меня"); // создание кнопки myButtonsetLayout (myManager); // активизация менеджера myManagerthis.add(myButton, myManager.CENTER); // добавление кнопки myBtton в апплет (this), в область "Центр"GridBagLayout myManager = new GridBagLayout( ); // создание менеджера типа GridBagLayoutButton myButton = new Button("Нажми меня"); // создание кнопки myButtonsetLayout(myManager); // активизация менеджера myManagerGridBagConstraints ogranichenie = new GridBagConstraints( ); // создание объекта ограниченийogranichenie.weightx = 1.0; // описание ограниченийogranichenie.gridwidth = GridBagConstraints.RELATIVE; // описание ограниченийogranichenie.fill = GridBagConstraints.BOTH; // описание ограниченийmyManager.setConstraints(myButton, ogranichenie ); // активизация ограничений для кнопки myButtonthis.add (myButton); // добавление кнопки myButton в апплетВсе приведенные выше менеджеры расположения – это классы, описанные в пакете AWT.

Существуюттакже и другие менеджеры расположения. Например, в пакете com.borland.jbcl.layout, поставляемом вместесо средой разработки Jbilder, описан менеджер расположения XYLayout, который позволяет самостоятельнозадавать размеры и координаты элементов:import com.borland.jbcl.layout.*;// импорт пакета, содержащего менеджер расположенияXYLayout myManager = new XYLayout( ); // создание нового менеджера расположенияthis.setLayout(myManager);// активизация менеджера для апплета (this)myManager.setWidth(283); myManager.setHeight(261);// ширина и высота окна менеджераButton myButton = new Button("Knopka");// создание кнопки с надписью Knopkathis.add ( myButton, new XYConstraints (128, 191, 123, 25) ); // добавление кнопки в координаты X:Y=128:191// и с размером кнопки 123 на 25 пикселей10.2.

Элементы управления в апплете, обработка событий.Апплет может содержать различные элементы управления: кнопки (класс Button), флажки и переключатели(класс Chekbox), списки (класс List), выпадающие списки (класс Choice), надписи (класс Label), поля ввода(класс TextField), текстовые области (класс TextArea), раскрывающиеся и контекстные меню и др. элементы.Большинство из них определено в пакете AWT, однако возможно использование и других пакетов,например, javax.swing, com.borland.dbswing и др.Каждый элемент управления, и апплет в целом, имеет свой список событий, происходящих при техили иных действиях пользователя. Достаточно просто описать методы, которые будут выполняться принаступлении тех или иных событий. Примеры событий: mousePressed (кнопка мыши нажата), mouseReleased(кнопка мыши отпущена), mouseClicked (щелчок кнопкой мыши), mouseEntered (мышь вошла в границыэлемента), mouseExited (мышь вышла за пределы элемента), mouseMoved (мышь перемещается надэлементом), mouseDragged (мышь перемещается над элементом, удерживая нажатой кнопку мыши),keyPressed (клавишу нажали – можно определить какая), keyReleased (клавишу отпустили), keyTyped(обобщенное событие: клавиша нажата и отпущена), focusGained (элементом получен фокус), Ляхевич А.Г., 2000 - 2002 годfocusLost(элементом потерян фокус), actionPerformed (обобщенное событие: произошло действие надэлементом), itemStateChanged (изменилось состояние элемента – для флажков) и др.Добавление элементов управления в апплет происходит, обычно, на стадии инициализации апплета(метод Init) по следующей общей схеме:1) Создать и активизировать менеджер расположенияXYLayout myManager = new XYLayout( );this.setLayout(myManager); myManager.setWidth(283); myManager.setHeight(261);2) Создать элемент управленияButton button1 = new Button( );3) Добавить элемент управления в апплетthis.add(button1, new XYConstraints(128, 191, 123, 25));4) Описать процедуры обработки событий для элемента.//установить "прослушиватель" событий мыши для кнопки button1button1.addMouseListener(new java.awt.event.MouseAdapter() {// при нажатии кнопки мыши вызываем метод button1_mousePressedpublic void mousePressed(MouseEvent e) {button1_mousePressed(e);}// при отпускании кнопки мыши вызываем метод button1_ mouseReleasedpublic void mouseReleased(MouseEvent e){button1_mouseReleased(e);}// при щелчке кнопкой мыши вызываем метод button1_ mouseClickedpublic void mouseClicked(MouseEvent e) {button1_mouseClicked(e);}// конец "прослушивателя" событий мыши для кнопки button1});5) При возникновении событий, пользоваться свойствами и методами элемента, для манипулирования егосостоянием и получения введенной пользователем информации.// вызов этих процедур был описан на шаге 4void button1_mousePressed(MouseEvent e) {button1.setBackground(Color.red); // при нажатии на кнопку она становится красной}void button1_mouseReleased(MouseEvent e) {button1.setBackground(Color.gray); // при отпускании кнопки она становится опять серой}void button1_mouseClicked(MouseEvent e) {button1.setLabel("knopka was clicked by user"); // после щелчка на кнопке, надпись на ней изменяется}* Внимание: при описании переключателей, учитывайте следующие особенностью пакета AWT:фактически в AWT есть только флажки (квадратик с галочкой), но отсутствуют переключатели (кружокс точкой).

Характеристики

Тип файла
PDF-файл
Размер
6 Mb
Материал
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее