3973

Знайомство з пакетом Swing

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота №7 (Знайомство з пакетом Swing) Тема роботи: Знайомство з пакетом Swing Мета роботи: Дослідити пакет Swing. План роботи. Ознайомлення з компонентами бібліотеки Swing. Навчитися добавляти компоненти до контейнерів Озн...

Украинкский

2012-11-10

350.08 KB

13 чел.

7.

Лабораторна робота №7 (Знайомство з пакетом Swing)

Тема роботи: Знайомство з пакетом Swing

Мета роботи: Дослідити пакет Swing.

План роботи

1.

2.

3.

4.

Ознайомлення з компонентами бібліотеки Swing.

Навчитися добавляти компоненти до контейнерів

Ознайомитися з методикою обробки подій в Java.

Виконати задані приклади.

Теоретичні відомості

Для реалізації графічного інтерфейсу користувача в Java був створений пакет компонентів

Swing. Число компонентів Swing досить велике, тому нижче наводяться основні класи. Всі

видимі компоненти Swing походять від базового класу java.swing.JComponent і тому наслідують

всі властивості та методи цього класу.

Контейнери найвищого рівня

Контейнери найвищого рівня – класи, котрі можуть включати в собі інші контейнери або

компоненти.

JDialog – діалогове вікно.

JFrame – контейнер “Вікно”.

Ці контейнери можуть включати в себе контейнери загального користування і контроли.

Контейнери загального користування.

63


JPanel – найбільш вживаний контейнер, котрий дозволяє включати в себе будь-які

контроли та інші панелі.

JScrollPane – панель прокрутки.

JSplitPane

JTabbedPane

JToolBar

Основні контроли.

JLabel – компонент для відображення статичного тексту і/або малюнку,

JCheckBox – цей компонент дозволяє вибрати одне із можливих значень “так” або “ні”,

JRadioButton – елемент управління для формування групи, у якій можна вибрати тільки один

елемент,

JButton – стандартна кнопка Windows, може відображати текст і/або значок.

64


JList

JComboBox

JMenuBar

JtextField – компонент для відображення рядка тексту, у якому користувач може

редагувати текст,

JtextArea – компонент, котрий може відображати текст, який складається із кількох рядків,

JeditorPane – компонент для редагування/відображення HTML або RTF текстів

Приклад 1.

import javax.swing.*;

import java.awt.*;

public class Lab3 extends JFrame

{

public Lab3()

{

setTitle("Work #3");

setSize(300,300);

getContentPane().setLayout(new FlowLayout());

JLabel label = new JLabel("simple label");

getContentPane().add(label);

JButton button = new JButton("Press me");

getContentPane().add(button);

setVisible(true);

65


}

public static void main(String[] args)

{

new Lab3();

}

}

Пояснення:

public Lab3() – конструктор класу Lab3, при цьому Lab3 є підкласом JFrame.

setTitle("Work #3") – задає титул даного вікна;

setSize(300,300) – задає розмір вікна;

getContentPane().setLayout(new FlowLayout()) – задаємо спосіб компонування компонентів

на основній панелі вікна (значення FlowLayout буде пояснене в наступній лабораторній роботі)

JLabel label = new JLabel("simple label") – створюємо об’єкт класу Jlabel (напис), котрий містить

текст “simple label”;

getContentPane().add(label) – додаємо новостворену компоненту label до основної панелі

вікна;

JButton button = new JButton("Press me") – створюємо компонент JButton (кнопка) із

написом “Press me”;

getContentPane().add(button) – додаємо кнопку до основної панелі;

setVisible(true) – показуємо наше вікно на екрані;

new Lab3() – створюємо новий об’єкт, тобто виконуємо все те, що вказано в його

конструкторі.

В результаті виконання такої програми побачимо вікно:

Завдання властивостей компонентів.

Оскільки всі компоненти є підкласами класу Jcomponent, то для всіх них властивості

задаються однаковим чином.

Наприклад:

label.setText(“Cahnged

text”)

задає

новий

текст

для

компоненту

label;

button.setForeground(Color.white) – задає колір фону для компоненту button.

66


Обробка подій.

Сучасний підхід до обробки подій грунтується на моделі делегування подій. Ця концепція

проста: джерело генерує подію і передає її одному або декільком блокам-слухачам (listener)

подій. Отримавши подію слухач обробляє її і потім повертає управління. Перевага даного

підходу в тому, що логіка обробки подій відділені від інтерфейсу користувача.

Подія – це об’єкт, котрий описує зміну стану джерела. Він може бути згенерований

взаємодією користувача ПК з елементами в графічному інтерфейсі користувача.

Джерело події – об’єкт, котрий генерує подію. Генерація події відбувається тоді, коли

якимсь-чином змінюється внутрішній стан об’єкта. Джерело може генерувати декілька типів

подій. Для того, щоб блоки-слухачі могли приймати повідомлення, джерело повинно

зареєструвати ці блоки. Кожен тип подій має власний тип реєстрації. Загальна форма таких

методів:

public void addMouseListener(MouseListener l).

Блоки прослуховування подій створюються шляхом реалізації одного або кількох

інтерфейсів прослуховування (інтерфейс визначає метод або методи, котрі повинні бути

реалізовані в класі).

Найважливіші інтерфейси та їх методи:

Інтерфейс ActionListener

метод:

void actionPerformed(ActionEvent ae) – метод викликається коли настає action-подія,

наприклад, користувач натискає мишкою на кнопці або написі.

Інтерфейс ComponentListenet

методи:

void componentResized(ComponentEvent ce);

void componentMoved(ComponentEvent ce);

void componentShown(ComponentEvent ce);

void componentHidden(ComponentEvent ce) : методи викликаються коли компонент

змінюється в розмірах, переміщуються, відображається на екрані або стає невидимим.

Інтерфейс MouseListener

методи:

void mouseClicked()– якщо кнопка мишки натискається і відразу ж відпускається;

void mouseEntered() – якщо вказівник мишки входить в межі компонента;

void mouseExited()– якщо вказівник мишки виходить за межі компонента;

void mousePressed() – якщо кнопка мишки натискається;

void mouseReleased() – якщо кнопка мишки відпускається.

Інтерфейс MouseMotionListener

методи:

void mouseDragged(MouseEvent me);

void mouseMoved(MouseEvent me) – методи викликаються багато разів, коли мишка

перетягується (dragged) або коли мишка переміщується.

Приклад 2.

67


import javax.swing.*;

import java.awt.*;

import java.awt.event.MouseMotionListener;

import java.awt.event.MouseEvent;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

public class Lab3 extends JFrame

{

private JLabel label;

private JButton button;

public Lab3()

{

setTitle("Work #3");

setSize(300,300);

getContentPane().setLayout(new FlowLayout());

addMouseMotionListener(new Lab3MouseMoution());

label = new JLabel("simple label");

getContentPane().add(label);

button = new JButton("Press me");

button.addActionListener(new ButtonPressed());

getContentPane().add(button);

setVisible(true);

}

public static void main(String[] args)

{

new Lab3();

}

class Lab3MouseMoution implements MouseMotionListener

{

public void mouseDragged(MouseEvent e)

{

}

public void mouseMoved(MouseEvent e)

{

System.out.println("mouse moved, x - "+e.getX()+" , y - "+e.getY());

}

}

class ButtonPressed implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

System.out.println("button pressed");

}

68


}

}

Пояснення:

class Lab3MouseMoution implements MouseMotionListener – класс-слухач подій

переміщення мишки;

addMouseMotionListener(new Lab3MouseMoution()) – додаємо слухач, котрий буде

обробляти події типу переміщення мишки до вікна Lab3.

class ButtonPressed implements ActionListener – клас-слухач події натискання на

кнопку.

button.addActionListener(new ButtonPressed()) – додаємо слухач натискання на кнопку до

кнопки button.

Порядок виконання роботи

1. Помістіть програмно вікно Lab3 по центру екрану.

Для цього отримайте розміри екрану:

int width = Toolkit.getDefaultToolkit().getScreenSize().width;

int height = Toolkit.getDefaultToolkit().getScreenSize().height.

Помістіть

вікно

з

допомогою

методу:

setBounds(int x, int y, int width, int hight).

Додайте ці методи в конструкторі класу Lab3() перед методом setVisible().

2.

Змініть клас Lab3MouseMoution таким чином, щоб при переміщенні мишки над вікном

координати мишки виводились на написі label.

3.

При натисканні на кнопку "Press me" нічо не відбувається зробіть так, щоб виводилося

повідомленн "Press me" в консольне меню.

4.

Зробіть так, щоб при натисканні на кнопку "Press me" виводилося повідомлення "Press me"

в label.

5.

Додати ще один об’єкт типу Jlabel, додайте клас-слухач таким чином, щоб на написі

відображались координати вікна та його розмір.

6.

Назвіть вікно своєю фамілією.

7. Оформити звіт. У звіті повинно бути текст програми і скріншоти результатів.

8. Прикріпити до VNS файл [Ваша Фамілія].zip в архіві повинно бути файли програм [Ваша

Фамілія]_labN_k.class ,a також файли звіту [Ваша Фамілія]_Zvit_LabN.mdb, де N – номер

лабораторної роботи, k – номер програми.

Контрольні питання

1. Для чого призначений компонент JtextField?

2. Поясніть термін контейнери найвищого рівня?

3. Метод якого слухача викликається коли настає action-подія, наприклад, користувач натискає

мишкою на кнопці або написі.

4. Методи якого слухача викликаються коли компонент змінюється в розмірах, переміщуються,

відображається на екрані або стає невидимим.

5. Методи якого слухача викликаються коли кнопка мишки натискається і відразу ж

відпускається чи вказівник мишки входить в межі компонента чи вказівник мишки виходить за

межі компонента, кнопка мишки натискається чи відпускається.

6. Який з класів відноситься до контейнерів найвищого рівня?

69



 

А также другие работы, которые могут Вас заинтересовать

33964. ХОЛЕЦИСТИТ ХРОНИЧЕСКИЙ. Этиология. Классификация. Патогенез. Клиника диф. диагноз. Лечение. Лапараскопическая холециститэктомия 37 KB
  Хронический холецистит хроническое воспаление жёлчного пузыря характеризующееся рецидивирующей подострой симптоматикой чаще всего обусловленной наличием в его просвете камней. Если камни мигрируют по путям оттока жёлчи они могут вызвать обструкцию пузырного протока что приводит к острому холециститу; обструкция общего жёлчного протока вызывает желтуху а обструкция панкреатического протока панкреатит Сладж пузырной жёлчи вязкий материал в просвете жёлчного пузыря нерастворимый в жёлчи который при УЗИ обнаруживают в виде пластов...
33965. Желтуха 35 KB
  Уровень билирубина в крови при этом повышен. В зависимости от причины повышения уровня билирубина в крови выделяют три основных типа желтух. Паренхиматозная печеночная желтуха развивается в результате повреждения гепатоцитов способность которых связывать свободный 'билирубин крови и переводить его в билирубин глюкуронид прямой билирубин уменьшается. В анализах крови повышение уровня непрямого билирубина концентрация прямого билибурина не повышена.
33966. Показания к операции. Характер оперативного вмешательства и последствия при остром панкреатите 26.5 KB
  Хирургическое лечение при остром панкреатите показано: 1 при сочетании острого панкреатита с деструктивными формами острого холецистита; 2 при безуспешном консервативном лечении в течение 36 48 ч; 3 при панкреатогенном перитоните при невозможности выполнения лапароскопического дренирования брюшной полости; 4 при осложнениях острого панкреатита: абсцессе сальниковой сумки флегмоне забрюшинной клетчатки. В диагностике и лечении деструктивных форм острого панкреатита большое значение имеет лапароскопия при которой можно уточнить...
33967. Анатомия и физиология пищевода. Методы исследования. Дивертикул пищевода 41.5 KB
  Анатомия и физиология пищевода. Дивертикул пищевода. Вход в пищевод расположен на уровне перстневидного хряща и отстоит от переднего края верхних резцов на 14 16 см рот пищевода. Второе физиологическое сужение пищевода находится примерно в 25 см от края верхних резцов на уровне бифуркации трахеи и пересечения пищевода .
33968. Пенетрация язвы 25 KB
  Пенетрация язвы В развитии пенетрации язвы различают три стадии: внутристеночную пенетрацию язвы стадию фиброзного сращения завершенную пенетрацию в соседний орган. Наиболее часто пенетрация язвы происходит в малый сальник в головку поджелудочной железы в печеночнодвенадцатиперстную связку. Возможна пенетрация язвы в печень в желчный пузырь в поперечную ободочную кишку и ее брыжейку. Появление боли в спине боль опоясывающего характера наблюдаются при пенетрации язвы в поджелудочную железу.
33969. Дудоденальная непроходимость. Пилородуодунальній стеноз 23.5 KB
  или пилорического отдела желудка. воспалительным инфильтратом обтурацией просвета отеком слизистой пилороспазмом или опухолью желудка. Декомпенсация гастростаз атония желудка многократная рвота рвотные массы зловонные многодневной давности. Пальпаторно контуры растянутого желудка шум плеска .
33970. Полипы желудка 25.5 KB
  Полипы желудка. Полипы желудка представляют собой патологические разрастания эпителиальной ткани. 7090 всех полипов желудка cоставляют гиперпластические полипы. Остальные 1030 приходится на долю аденоматозных полипов железистых полипов дна желудка и гамартомных полипов.
33971. Брюшина. Перитонит: классификация по клин. течению, распространнённостью процеса, характером выпота 37 KB
  Брюшина представляет собой тонкую серозную оболочку покрывающую внутреннюю поверхность брюшной стенки и расположенные в брюшной полости внутренние органы. Выделяют париетальную брюшину покрывающую внутреннюю поверхность брюшной стенки и висцеральную покрывающую большую часть внутренних органов. В брюшной полости в нормальных условиях находится небольшое количество прозрачной жидкости увлажняющей поверхность внутренних органов и облегчающей перистальтику желудка и кишечника. Богатая васкуляризация брюшинного листка обусловливает его...
33972. НЕПРОХОДИМОСТЬ КИШЕЧНАЯ 29.5 KB
  Классификация По этиологии Динамическая Спастическая заболевания нервной системы истерия спазмофилия дискинезия глистная инвазия полипы толстой кишки Паралитическая воспалительный процесс в брюшной полости флегмона гематома забрюшинного пространства состояние после лапаротомии рефлекторные влияния патологических состояний внебрюшинной локализации например пневмонии плеврита ИМ тромбоз брыжеечных сосудов инфекционные заболевания токсические парезы Механическая Обтурационная: интраорганная глистная инвазия...