Разработка приложений на языке Java.
Приложение – это программа, имеющая хотя бы одну форму и состоящая из двух классов:
1. Класс проекта, это класс содержащий функцию запуска программы main, который создает форму и выводит ее на экран. В общем случае класс проекта может выглядеть следующим образом.
// Первым делом надо указать имя пакета к которому относиться
// данное приложение
package имя пакета;
// Подключаем класс, обеспечивающий обработку внешнего
// вида формы (интерфейса пользователя)
import javax.swing.UIManager;
// Подключаем пакет AWT. Это основной пакет
// обеспечивающий работу графического интерфейса
import java.awt.*;
// Создаем запускающий класс программы
public class имя главного класса {
// Определяем флаг, указывающий является ли создаваемая форма
// частью данного пакета
boolean packFrame = false;
// Далее идет описание конструктора класса, который создает и
// выводит окно на экран
public имя главного класса() {
// Создаем окно
класс окна frame = new класс окна();
// Проверяем состояние фрейма
if(packFrame) {
frame.pack();
}
else {
frame.validate();
}
// Определяем размеры экрана
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
// Определяем размеры окна
Dimension frameSize=frame.getSize();
// Если установленные размеры окна больше размера экрана,
// то принудительно устанавливаем их в размер экрана.
if(frameSize.height>screenSize.height)
{
frameSize.height=screenSize.height;
}
if (frameSize.width>screenSize.width)
{
frameSize.width=screenSize.width;
}
// Располагаем окно по центру
frame.setLocation((screenSize.width-frameSize.width)/2,
(screenSize.height - frameSize.height) / 2);
// и выводим его на экран
frame.setVisible(true);
}
// Далее идет описание точки входа в программу. Это функция
// должна быть определена как статическая, т.к. вызывается еще до
// создания какого либо объекта
public static void main(String[] args) {
// Устанавливаем внешний вид окна, тот, который определен
// системой. В настоящее время существует большое количество
// способов отображения окон, их основной недостаток это отцетствие
// в стандартных пакетах Java
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
// и создаем динамический объект выводящий окно на экран
new имя главного класса ();
}
}
2. Класс формы. Это класс непосредственно описывающий окно, которое будет выведено на экран. Данный класс должен является дочерним классом от класса Frame (при использовании библиотеки AWT) или JFrame (при использовании библиотеки Swing). В общем случае класс формы, которая ничего не делает может иметь следующий вид:
package имя пакета;
// Подключаем пакет AWT. Это основной пакет
// обеспечивающий работу графического интерфейса
import java.awt.*;
// Подключаем пакет обработки событий, который необходим
// для реакции приложения на системные сообщения. В данном
// случае обработка нажатия пользователем системной кнопки
// «закрыть»
import java.awt.event.*;
// Подключаем пакет SWING, этот пакет является расширением пакета
// AWT и обеспечивает упрощение разработки интерфейса.
import javax.swing.*;
// Создаем класс, который является наследником класса
// JFrame содержащим все функции работы с графическим интерфейсом
// поддерживаемым язаком Java
public class класс окна extends JFrame {
// Далее идет описание глобальных переменных и визуальных объектов
// расположенных на форме.
…
// Описываем конструктор окна. В данном случае этот конструктор
// без параметров, т.к. это окно является основным окном приложения
public класс окна() {
// Устанавливаем флаг перехвата оконных событий, таких как нажатие
// мыши, клавиши, системной команды и т.д.
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
// Запускаем функцию инициализации компонентов окна
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
// Если данной окно является дочерним, то необходимо дополнительно
// описать конструктор класса создания дочернего окна. Для этого в
// качестве параметра необходимо указать возможность передачи
// родительского окна, для установки их взаимосвязей.
public класс окна(JFrame owner) {
// Передаем класс родительского окна базовому классу, в нашем
// случае JFrame
super(owner);
// Устанавливаем флаг перехвата оконных событий, таких как нажатие
// мыши, клавиши, системной команды и т.д.
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
// Запускаем функцию инициализации компонентов окна
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
// Функция инициализации объектов системы. Здесь должно быть указаны
// все инструкции, которые необходимо выполнить в момент создания
// объекта, такие как установка взаимосвязей компонентов, их
// позиционирование, создание каких либо динамических объектов
// и т.д.
private void jbInit() throws Exception {
}
// И последней обязательной функцией является обработчик событий
// окна, в этом примере он необходим для обеспечения завершения
// окна при нажатии кнопки «закрыть» в системном меню.
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
}
Для простоты восприятия желательно чтобы каждый класс находился в своем файле, хотя с точки зрения программирования на языке Java разницы никакой нет.
Среда программирования JBuilder при создании приложения эти классы создает автоматически.
Обычно в настоящее время пользуются библиотекой Swing, в том и в другом случае данный класс содержит конструктор и функцию инициализации объектов (в JBuilder – jbInit, вызываемая из конструктора).
Основными переменными данного класса являются компоненты формы (если они есть), которые устанавливаются на нее с помощью закладки Designer в среде JBuilder, работа с Designer частично напоминает работу с компонентами формы C++Builder или Delphi, но в сильно урезанном виде.
Каждый объект, расположенный на форме имеет определенные свойства, устанавливаемые в Designer и обработчики событий, которые в свою очередь являются отдельными классами, описываемые внутри главного класса.
Особое внимание следует обратить на такое свойство контейнерного класса как layout. Это свойство определяет способ расположения компонентов входящих в состав данного класса. Способы позиционирования приведены в таблице 3.
Таблица 3. Способы позиционирования компонентов.
Способ | Поведение компонента |
XYLayout | Автоматическое позиционирование отсутствует. Положение компонента на форме определяется координатами. При изменение размеров формы размеры и положение компонентов следует устанавливать вручную. |
VerticalFlowLayout | При данном способе позиционирования компоненты располагаться сверху вниз, занимая все пространство формы по горизонтали. При изменении размеров, горизонтальные размеры компонентов пропорционально изменяются. |
BoxLayout | При данном способе позиционирования компоненты располагаться слева на право, занимая все пространство формы по горизонтали и вертикали. При изменении размеров, горизонтальные и вертикальные размеры компонентов пропорционально изменяются. |
OverlayLayout | При данном способе позиционирования все пространство формы отдается одному компоненту. При изменении размеров, горизонтальные и вертикальные размеры компонента пропорционально изменяются. |
BorderLayout | При данном способе расположения все пространство формы делиться на пять частей: North, South, East, West, Center. Таким образом контейнерный класс может содержать только пять компонентов. ü Компонент, способ позиционирования которого задан как North, располагается по всей верхней части формы. Высота данного компонента задается вручную. ü Компонент, способ позиционирования которого задан как South, располагается по всей нижней части формы. Высота данного компонента задается вручную. ü Компонент, способ позиционирования которого задан как East, располагается по всей правой части формы. Ширина данного компонента задается вручную. ü Компонент, способ позиционирования которого задан как West, располагается по всей левой части формы. Ширина данного компонента задается вручную. ü Компонент, способ позиционирования которого задан как Center, занимает все свободное формы, оставшееся от остальных четырех компонентов При изменении размеров формы размеры компонентов пропорционально изменяются соответственно: North, South - по ширине; East, West – по высоте; а Center по обеим координатам. |
FlowLayout | При данном способе позиционирования компоненты занимают свободное пространство с лева на право, когда ширина формы не позволяет добавить очередной компонент, он переноситься на следующую линию по вертикали. При изменение размеров формы размеры компонентов следует устанавливать вручную. |
GridLayout | При данном способе позиционирования все пространство контейнерного класса делиться на равные части, в зависимости от количества колонок и столбцов таблицы компонентов. Каждый компонент занимает все пространство выделенной ему ячейки. При изменении размеров формы размеры компонентов пропорционально изменяются. |
При ручном позиционировании особое внимание стоит уделить размерам объекта и его местоположению на форме. Для определения местоположения используется функция setLocation, параметрами которой являются относительные координаты по оси X и Y. Кроме того следует установить минимальные minimumSize – размеры, меньше которых компонент быть не может и maximumSize - размеры больше которых компонент быть не может. Для определения текущих размеров используется свойство preferredSize.
Дата добавления: 2016-01-03; просмотров: 676;