Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Васюткина Технология разработки програм java (Горячев).doc
Скачиваний:
124
Добавлен:
23.03.2016
Размер:
1.84 Mб
Скачать

Вопросы для самопроверки

  1. Что такое апплет двойного назначения?

  2. Над объектом какого типа выполняются все графические операции?

  3. Почему рекомендуется использовать ограниченный набор цветов?

  4. Почему рекомендуется использовать ограниченный набор шрифтов?

  5. Как получить список всех доступных шрифтов?

  6. Что такое событие? Когда возникают события?

  7. Какой метод какого класса получает управление при возникновении события? Что передается ему в качестве параметра?

  8. Какие методы отвечают за обработку простых событий от мыши?

  9. Какие методы отвечают за обработку простых событий от клавиатуры?

  10. Что такое модель делегирования событий?

  11. Какие существуют способы задания обработчиков событий?

  12. Как подключиться к прослушиванию события?

  13. Что такое вложенные классы?

  14. Что такое анонимные классы?

  15. Как выполнять рисование не в методе paint?

Глава 3: разработка графического интерфейса программы Библиотека графических компонент awt

Для построения графического интерфейса GUI в Java имеются две отдельных, но тесно связанных между собой библиотеки графических классов: Abstract Windows Toolkit (AWT) и Java Foundation Classes (JFC), которая известна как Swing. Классы из библиотеки Swing (особенно те, что относятся к элементам управления) начинаются с символа J. Библиотека Swing более современная и предоставляет больше возможностей, чем AWT, к тому же элементы управления в ней более привлекательны визуально.

Компоненты Java. Все элементы управления основаны на классе Component. Всякий графический вывод на экран связан (прямо или косвенно) с компонентом. Например, в силу того, что апплеты фактически являются потомками класса Component, имеется возможность рисовать прямо в апплете, не прибегая для этого к специальным методам.

Класс Component содержит очень много методов для обеспечения работы с компонентом GUI.

Некоторые методы класса Component:

getParent - получает объект-владелец компонента;

isShowing - проверяет, является ли компонент видимым;

isEnabled - проверяет, является ли компонент разрешенным;

location - возвращает текущее положение компонента;

size - возвращает текущий размер компонента;

bounds - возвращает текущие границы компонента;

enable - разрешает компонент;

disable - запрещает компонент;

show - отображает компонент;

hide - скрывает компонент;

getForeground - получает текущий цвет переднего плана;

setForeground - устанавливает текущий цвет переднего плана;

getBackground - получает текущий цвет фона;

setBackground - устанавливает текущий цвет фона;

getFont - Получает текущий шрифт;

setFont - устанавливает текущий шрифт;

move - перемещает компонент в новое положение (в системе координат предка);

resize - изменяет ширину и высоту компонента;

getGraphics - получает графический контекст компонента;

paint - отвечает за рисование компонента;

update - отвечает за обновление компонента, вызывается методом repaint();

paintAll - отвечает за рисование компонента и его подкомпонентов;

repaint - вызывает перерисовку компонента. Этот метод вызывает метод update();

imageUpdate - отвечает за перерисовку компонента при изменении выводимого в компоненте изображения типа Image;

createImage - создает изображение;

prepareImage - подготавливает изображение типа Image для визуализации;

inside - проверяет, находится ли заданная точка “внутри” компонента;

locate - возвращает компонент, содержащий заданную точку;

mouseDown, mouseDrag, mouseUp, mouseMove, mouseEnter, mouseExit - отвечают за обработку соответствующих событий мыши;

keyUp, keyDown - отвечают за обработку соответствующих событий клавиатуры;

action - вызывается в том случае, если в компоненте происходит некоторое действие;

gotFocus - указывает на то, что компонент получил фокус ввода;

lostFocus - указывает на то, что компонент потерял фокус ввода;

requestFocus - запрашивает фокус ввод;

nextFocus - передает фокус следующему компоненту.

Этими методами могут пользоваться все наследуемые от класса Component классы GUI - все элементы управления и классы контейнеров.

Для того чтобы нарисовать изображение, вывести некоторый текст или разместить элемент пользовательского интерфейса на экране, должен использоваться контейнер класса Container или его подкласса. Контейнеры - это объекты, которые содержат компоненты. А компоненты - это объекты, которые наследуют от класса Component: кнопки, полосы прокрутки, другие элементы управления. Контейнеры сами являются подклассами Component, что подразумевает возможность их вложения или размещения внутри друг друга.

Так, например, класс Applet является подклассом Panel, который в свою очередь является подклассом Container, а тот - подклассом Component. Поэтому все апплеты умеют вводить и отображать компоненты. Нужно просто создать компонент и ввести его в апплет.

Элементы управления. При их помощи можно создавать программы, обладающие развитым пользовательским интерфейсом. Язык Java содержит все стандартные элементы управления, которые можно обнаружить в современных операционных системах. Элементы управления сначала создаются, затем добавляются в контейнер методом add().

Кнопки (класс JButton) - это элементы, которые дают возможность нажимать на них, чтобы проинициализировать некоторое действие. Для создания кнопок необходимо создать экземпляр объекта JButton, дать ему имя и добавить его в контейнер:

JButton btn = new JButton("Click me!");

add(btn);

или еще проще:

add(new JButton("Click me!"));

Следует обратить внимание на то, что при создании кнопки не передаются координаты X, Y ее положения. Это происходит потому, что элементы управления, размещаются на экране в соответствии с правилами, определяемыми менеджерами компоновки (размещения): при этом координаты не используются.

Создать кнопку можно с заданной меткой (строкой), а можно и без нее. Для этого предназначены соответствующие конструкторы JButton(String label) и JButton(). Для изменения и получения метки кнопки существуют методы setText() и getText() соответственно.

Обработка событий от кнопки в Java. При нажатии пользователем на кнопку генерируется событие ActionEvent. Для обработки этого события используется интерфейс ActionListener, а метод этого интерфейса – actionPerformed.

myButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e ) {

((JButton)e.getSource()).setBackground(java.awt.Color.red);

((JButton)e.getSource()).setText("Thanks!");

}

});