Создание приложения с графическим интерфейсом
Создание в NetBeans 5.5 приложения Java с графическим интерфейсом. Редактор экранных форм и система ведения проектов в разных версиях. Создание нового класса в проекте. Документирование исходного кода в Java. Основные компоненты пакетов swing и awt.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 04.11.2015 |
Размер файла | 2,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Создание в NetBeans 5.5 приложения Java с графическим интерфейсом
интерфейс код исходный
Экранной формой называется область, которая видна на экране в виде окна с различными элементами - кнопками, текстом, выпадающими списками и т.п. А сами эти элементы называются компонентами.
Среды, позволяющие в процессе разработки приложения в интерактивном режиме размещать на формы компоненты и задавать их параметры, называются RAD-средами. RAD расшифровывается как Rapid Application Development - быстрая разработка приложений.
В NetBeans и других современных средах разработки такой процесс основан на объектной модели компонентов, поэтому он называется Объектно-Ориентированным Дизайном (OOD - Object-Oriented Design).
NetBeans является RAD-средой и позволяет быстро и удобно создавать приложения с развитым графическим пользовательским интерфейсом (GUI). Хотя языковые конструкции Java, позволяющие это делать, не очень просты, на начальном этапе работы с экранными формами и их элементами нет необходимости вникать в эти тонкости. Достаточно знать основные принципы работы с такими проектами.
С точки зрения автора изучение того, как создавать приложения с графическим интерфейсом, весьма важно для начинающих программистов, и это следует делать с самых первых шагов по изучению Java.
Во-первых, с самого начала осваивается создание полноценных приложений, которые можно использовать в полезных целях. Трудно месяцами изучать абстрактные концепции, и только став профессионалом иметь возможность сделать что-то такое, что можно показать окружающим. Гораздо интереснее и полезнее сразу начать применять полученные знания на практике.
Во-вторых, такой интерфейс при решении какой-либо задачи позволяет лучше сформулировать, какие параметры надо вводить, какие действия и в какой последовательности выполнять, и что в конце концов получается. И отобразить все это на экране: вводимым параметрам будут соответствовать пункты ввода текста, действиям - кнопки и пункты меню, результатам - пункты вывода текста.
Создание приложения с графическим интерфейсом
Для создания приложения запускаем программу NetBeans. Далее включаем пункты меню File, NewProject. Открывается диалоговое окно (см. рис. 1.1). В этом окне выбираем Categories General и Projects Java Application, затем нажимаем кнопку Next. В появившемся окне: вводим имя проекта GUI_application, нажимаем кнопку Brows и выбираем папку, в которой будем размещать проект, очищаем строку Create Main Class и нажимаем кнопку Finish. Заготовка проекта создана (см. рис.1.2)
Размещено на http://www.allbest.ru/
Рис 1.1
Размещено на http://www.allbest.ru/
Рис.1.2
В окне Projects нажимаем правую кнопку мыши на именю приложения GUI_application (см. рис.1.3). В появившемся контекстном меню выбираем пункты New, JFrame Form. После этого появляется диалоговое окно, в котором просто нажимаем кнопку Finish. Появляется окно формы (рис.1.4).
Размещено на http://www.allbest.ru/
Рис.1.3
Размещено на http://www.allbest.ru/
Рис.1.4
Из окна Palette перетаскиваем на созданную форму значок главного меню JMenuBar. Находим значок главного меню jMenuBar1[JMenuBar] на дереве проекта в окне Projects, вызываем контекстное меню этого значка и включаем пункт меню Add JMenu. На форме появляется пункт меню Menu, а на дереве проекта пункт jMenu1[JMenu]. Для переименования созданного пункта меню выделяем на дереве проекта пункт jMenu1[JMenu] и в окне Properties (свойства) находим свойство text и изменяем значение данного свойства на File. Таким образом, мы создали пункт меню File. Для создания других пунктов меню (Edit, Help) поступаем аналогично и получаем (см. рис.1.5).
Размещено на http://www.allbest.ru/
Рис.1.5
Теперь необходимо создать подпункты для каждого пункта меню. Рассмотрим это на примере пункта File. На дереве проекта находим значок jMenu1[JMenu], соответствующий пункту меню File. Вызываем контекстное меню этого значка и включаем пункты Add, JMenuItem. После этого на дереве проекта появляется значок jMenuItem1[JMenuItem]. Выделяем на дереве проекта этот значок и в окне Properties изменяем значение свойства text на Open. Аналогично устанавливаем другие подпункты пункта меню File.
Создадим заголовок окна (формы После создания подпунктов меню для всех пунктов меню необходимо создать заголовок формы (окна). ). Для этого выделяем форму и в окне Properties находим свойство формы title (заголовок). Устанавливаем заголовок GUI Application.
Подпункт Exit пункта меню File служит для завершения работы приложения. Вставим в обработчик события «щелчок мыши по пункту Exit» команду завершения работы System.exit(0). Для этого вызовем контекстное меню значка jMenuItem4[JMenuItem], который относится к последнему подпункту (Exit) меню File. В этом меню включаем пункты Events, Action, actionPerformed. После этого в программном коде появляется обработчик указанного события (метод). В тело данного метода мы вставляем команду System.exit(0):
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
Запустим наше приложение для проверки проделанной работы. После запуска приложения на экране появляется окно формы с созданным меню (см. рис.1.6). Для проверки подпунктов меню щелкаем на кнопке File, в результате на экране появляются подпункты меню File.
Размещено на http://www.allbest.ru/
Рис. 1.6
Для завершения работы приложения щелкаем на подпункте меню Exit и программа завершает свою работу.
Для просмотра исходного кода щелкаем мышкой на кнопке Design и в окне редактора кода появится следующий текст:
/*
* NewJFrame.java
*
* Created on 25 Февраль 2014 г., 3:00
*/
/**
*
* @author Вячеслав
*/
public class NewJFrame extends javax.swing.JFrame {
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenuItem2 = new javax.swing.JMenuItem();
jMenuItem3 = new javax.swing.JMenuItem();
jMenuItem4 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
jMenu3 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("GUI Application");
jMenu1.setText("File");
jMenuItem1.setText("Open");
jMenu1.add(jMenuItem1);
jMenuItem2.setText("Save");
jMenu1.add(jMenuItem2);
jMenuItem3.setText("Save As...");
jMenu1.add(jMenuItem3);
jMenuItem4.setText("Exit");
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem4ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem4);
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
jMenuBar1.add(jMenu2);
jMenu3.setText("Help");
jMenuBar1.add(jMenu3);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 279, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu3;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
// End of variables declaration
}
Поясним некоторые его части. Так как имя пакета не указано, то это означает, что созданный класс размещен в пакете по умолчанию.
public class GUI_application extends javax.swing.JFrame
Эта строка означает, что задается общедоступный класс GUI_application, который является наследником класса JFrame, заданного в пакете swing, вложенном в пакет javax. Слово extends переводится как "расширяет" (класс-наследник всегда расширяет возможности класса-прародителя).
Общедоступный конструктор public NewJFrame() создает объект приложения и инициализирует все его компоненты, методом initComponents().
public static void main(String[] args)
Это главный метод приложения. Он является методом класса нашего приложения и автоматически выполняется Java-машиной при запуске приложения. В данном примере метод создает экранную форму приложения и делает ее видимой.
Далее следует область объявления компонентов - пунктов меню нашей формы. Она автоматически создается в исходном коде редактором экранных форм и недоступна для изменения в редакторе исходного кода.
2. Редактор экранных форм
Нажмем закладку Design ("дизайн") в левой верхней части редактора исходного кода. При этом мы переключимся из режима редактирования исходного кода (активна закладка Source - "исходный код") в режим редактирования экранной формы, как это показано на рисунке.
Размещено на http://www.allbest.ru/
Рис. 2.1 Редактирование экранной формы
Вместо исходного кода показывается внешний вид экранной формы и находящиеся на ней компоненты. Справа от окна, в котором показывается экранная форма в режиме редактирования, расположены: окно Palette ("палитра") - палитры компонентов и окно Properties ("свойства") - для показа и редактирования свойств текущего компонента.
Свойство - это поле данных, которое после изменения значения может проделать какое-либо действие. Например, при изменении значения ширины компонента отрисовать на экране компонент с новой шириной. "Обычное" поле данных на такое не способно. Таким образом, свойство - это "умное поле данных".
Палитра компонентов предназначена для выбора типа компонента, который нужен программисту для размещения на экранной форме. Например, добавим на нашу форму компонент типа JButton(сокращение от Java Button - "кнопка Java"). Для этого щелкнем мышью по пункту JButton на палитре и передвинем мышь в нужное место экранной формы. При попадании мыши в область экранной формы на ней появляется кнопка стандартного размера, которая передвигается вместе с мышью. Щелчок в нужном месте формы приводит к тому, что кнопка остается в этом месте. Вокруг нее показываются рамка и маленькие квадратики, обозначающие, что наш компонент является выделенным. Для него осуществляется показ и редактирование свойств в окне Properties.
Кроме того, от выделенного компонента исходят линии, к которым идет привязка для задания положения компонента на форме.
По умолчанию надписи на компонентах задаются как имя типа, после которого идет номер компонента. Но вместо заглавной буквы, в отличие от имени типа, используется строчная. Поэтому первая кнопка будет иметь надпись jButton1, вторая - jButton2, и так далее. Такие же имена будут приобретать автоматически создаваемые в исходном коде переменные, соответствующие кнопкам.
Изменить надпись на кнопке можно несколькими способами. Во-первых, сделав по ней двойной щелчок, и отредактировав текст. Во-вторых, перейдя в окно Properties, изменив значение свойства Text и нажав <Enter> для завершения ввода. В-третьих, изменив аналогичным образом свойство label. Наконец, можно в окне Properties отредактировать текст не в однострочном поле ввода значений для свойств Text или label, а открыв многострочный редактор путем нажатия на кнопку, находящуюся справа от пункта редактирования значения свойства. Однако многострочность редактора не помогает сделать надпись на кнопке многострочной.
Введем на кнопке надпись "OK" - используем эту кнопку для выхода из программы.
Размещено на http://www.allbest.ru/
Рис. 2.2. Редактирование свойств компонента
Размер компонента задается мышью путем хватания за рамку и расширения или сужения по соответствующим направлениям. Установка на новое место - перетаскиванием компонента мышью.
Некоторые свойства выделенного компонента (его размер, положение, текст) можно изменять непосредственно в области экранной формы. Однако, большинство свойств просматривают и меняют в окне редактирования свойств. Оно состоит из двух столбцов: в левом показываются имена свойств, в правом - их значения. Значения, стоящие в правом столбце, во многих случаях могут быть отредактированы непосредственно в ячейках таблицы. При этом ввод оканчивается нажатием на <Enter> или выходом из редактируемой ячейки, а отменить результаты неоконченного ввода можно нажатием <Escape>.
В правой части каждой ячейки имеется кнопка с надписью "…" - в современных операционных системах принято добавлять три точки в названии пунктов меню и кнопок, после нажатия на которые открывается диалоговое окно. В данном случае раскрывается окно специализированного редактора соответствующего свойства, если он существует.
Если требуется просматривать и редактировать большое количество свойств компонента, бывает удобнее щелкнуть правой кнопкой мыши по нужному компоненту и в появившемся всплывающем меню выбрать пункт "Properties". В этом случае откроется отдельное окно редактирования свойств компонента. Можно держать открытыми одновременно произвольное количество таких окон.
Булевские свойства в колонке значений свойств показываются в виде кнопок выбора checkbox - квадратиков с возможностью установки галочки внутри. Если галочки нет, значение свойства false, если есть - true.
Перечислим на примере кнопки ряд некоторых важнейших свойств, которые можно устанавливать для компонентов. Многие из них относятся и к другим компонентам.
Таблица 2.1
Название свойства |
Что оно задает |
|
background |
Цвет фона. |
|
componentPopupMenu |
Позволяет назначать всплывающее меню, появляющееся по нажатию правой кнопкой мыши в области компонента. |
|
font |
Шрифт, которым делается надпись на компоненте. |
|
foreground |
Цвет шрифта, которым делается надпись на компоненте. |
|
icon |
Картинка, которая рисуется на компоненте рядом с текстом. |
|
text |
Текст (надпись) на компоненте. |
|
toolTipText |
Всплывающая подсказка, появляющаяся через некоторое время при наведении курсора мыши на компонент. |
|
border |
Тип рамки вокруг компонента. |
|
borderPainted |
Рисуется ли рамка вокруг компонента. |
|
contentAreaFilled |
Имеется ли заполнение цветом внутренней области компонента (для кнопок оно создает эффект трехмерности, без заполнения кнопка выглядит плоской). |
|
defaultCapable |
Способна ли кнопка быть "кнопкой по умолчанию": при нажатии <Enter>автоматически происходит нажатие "кнопки по умолчанию" (такая кнопка на экранной форме должна быть одна). |
|
enabled |
Доступен ли компонент. По умолчанию все создаваемые на форме компоненты доступны. Недоступные компоненты рисуются более блеклыми красками. |
В качестве примера добавим всплывающую подсказку для нашей кнопки: введем текст "Эта кнопка предназначена для выхода из программы" в поле, соответствующее свойству toolTipText. К сожалению, подсказка может быть только однострочной - символы перевода на новую строку при выводе подсказки игнорируются, даже если они заданы в строке программным путем.
Наконец, зададим действие, которое будет выполняться при нажатии на кнопку - обработчик события (event handler) нажатия на кнопку. Для этого сначала выделим кнопку, после чего щелкнем по ней правой кнопкой мыши, и в появившемся всплывающем меню выберем пункт Events/Action/actionPerformed.
Рис. 2.3. Назначение обработчика события
Events означает "События", Action - "Действие", actionPerformed - "выполненное действие".
После этого произойдет автоматический переход в редактор исходного кода, и там появится заготовка обработчика события:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
Аналогичный результат можно получить и более быстрым способом - после того, как мы выделим кнопку в окне редактирования формы ( Design ), в окне Navigator показывается и выделяется имя этой кнопки. Двойной щелчок по этому имени в окне навигатора приводит к созданию заготовки обработчика события.
Рядом с обработчиком jButton1ActionPerformed будет расположен уже имеющийся обработчик события, срабатывающий при нажатии на пункт меню "Выход":
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
Заменим в нашем обработчике события строку с комментарием на код, вызывающий выход из программы:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
Теперь после запуска нашего приложения подведение курсора мыши к кнопке приведет к появлению всплывающей подсказки, а нажатие на кнопку - к выходу из программы.
Часто встречающийся случай - показ сообщения при наступлении какого-либо события, например - нажатия на кнопку. В этом случае вызывают панель с сообщением:
javax.swing.JOptionPane.showMessageDialog(null,"Меня нажали");
Если классы пакета javax.swing импортированы, префикс javax.swing при вызове не нужен.
3. Ведение проектов
Для того, чтобы не запутаться в разных проектах и их версиях, особенно с учетом того, что учебные проекты бывает необходимо часто переносить с одного компьютера на другой, следует серьезно отнестись к ведению проектов. Предлагается следующая система ведения проектов:
· Под каждый проект создается папка с названием проекта. Будем называть ее папкой архива для данного проекта. Названия используемых папок могут быть русскоязычными, как и имена приложений и файлов.
· При создании нового проекта среда разработки предлагает ввести имя папки, где его хранить - следует указать имя папки архива. Кроме того, предлагается ввести имя проекта. Это имя будет использовано средой NetBeans как для создания папки проекта, так и для названия вашего приложения. Для того, чтобы облегчить работу с вашим приложением в разных странах, рекомендуется делать это название англоязычным. В папке проекта среда разработки автоматически создаст систему вложенных папок проекта и все его файлы. Структура папок проектов NetBeans была описана ранее.
· Если берется проект с существующим исходным кодом, его папка копируется в папку нашего архива либо вручную, либо выбором соответствующей последовательности действий в мастере создания проектов NetBeans.
· При получении сколько-нибудь работоспособной версии проекта следует делать его архивную копию. Для этого в открытом проекте в окне "Projects" достаточно щелкнуть правой кнопкой мыши по имени проекта, и в появившемся всплывающем меню выбрать пункт "Copy Project". Откроется диалоговая форма, в которой предлагается автоматически образованное имя копии - к первоначальному имени проекта добавляется подчеркивание и номер копии. Для первой копии это _1, для второй _2, и так далее. Причем головная папка архива по умолчанию остается той же, что и у первоначального проекта. Что очень удобно, поскольку дает возможность создавать копию всего тремя щелчками мышки без набора чего-либо с клавиатуры.
Рис. 3.1 Создание рабочей копии проекта
Скопированный проект автоматически возникает в окне "Projects", но не становится главным. То есть вы продолжаете работать с прежним проектом, и все его открытые окна сохраняются. Можно сразу закрыть новый проект - правой кнопкой мыши щелкнуть по его имени, и в появившемся всплывающем меню выбрать пункт "Close Project".
Для чего нужна такая система ведения проектов? Дело в том, что у начинающих программистов имеется обыкновение разрушать результаты собственного труда. Они развивают проект, не сохраняя архивов. Доводят его до почти работающего состояния, после чего еще немного усовершенствуют, затем еще - и все перестает работать. А так как они вконец запутываются, восстановить работающую версию уже нет возможности. И им нечего предъявить преподавателю или начальнику!
Поэтому следует приучиться копировать в архив все промежуточные версии проекта, более работоспособные, чем уже сохраненные в архив. В реальных проектах трудно запомнить все изменения, сделанные в конкретной версии, и, что важнее, все взаимосвязи, вызвавшие эти изменения. Поэтому даже опытным программистам время от времени приходится констатировать: "Ничего не получается!" И восстанавливать версию, в которой еще не было тех нововведений, которые привели к путанице. Кроме того, часто бывает, что новая версия в каких-то ситуациях работает неправильно. И приходится возвращаться на десятки версий назад в поисках той, где не было таких "глюков". А затем внимательно сравнивать работу двух версий, выясняя причину неправильной работы более поздней версии. Или убеждаться, что все предыдущие версии также работали неправильно, просто ошибку не замечали.
4. Редактирование меню экранной формы
Имеются случаи, когда процесс редактирования компонентов несколько отличается от описанного выше. Например, для главного меню экранной формы и для всплывающих меню.
Рассмотрим, как изменить текст пунктов меню формы с английского на русский. Если щелкнуть мышью по какому-либо пункту ( item ) меню, в окне редактора свойств появятся значения свойств этого пункта. И мы легко сменим "File" на "Файл", "Edit" на "Правка", "Help" на "Справка". Для того, чтобы без компиляции и запуска программы посмотреть, как будет выглядеть наша экранная форма, можно нажать иконку Preview Design (третья по счету после закладки Design в окне редактирования экранной формы).
Но вложенные пункты меню, появляющиеся при выборе любого из пунктов верхнего уровня, так отредактировать невозможно. Они редактируются немного другим путем. При переходе в режим дизайна, а также в этом режиме при щелчке в области экранной формы, в левом нижнем окне (Inspector - "инспектор компонентов") среды разработки появляется список компонентов экранной формы. Навигатор позволяет просматривать деревья вложенности различных элементов проекта.
Сама экранная форма является экземпляром класса JFrame (от Java Frame - "окно, кадр", предоставляемое языком Java). В окне инспектора после схематического изображения компонента и имени соответствующей ему переменной в квадратных скобках указывается тип компонента. Развернем узел для нашей формы типа JFrame, а также вложенные узлы menuBar типа JMenuBar иfileMemu типа JMenu.
Размещено на http://www.allbest.ru/
Рис. 4.1 Окно инспектора компонентов
Размещено на http://www.allbest.ru/
Рис. 4.2 Развернутое дерево вложенности
Мы увидим имена переменных, соответствующих всем пунктам меню, вложенным в файловое меню: openMenuItem, saveMenuItem, saveAsMenuItem, exitMenuItem. Щелчок по имени openMenuItem в окне инспектора компонентов приведет к тому, что в окне редактирования свойств появятся значения свойств данного пункта меню. В поле Text заменим слово "Open" на "Открыть". Затем перейдем на пункт saveMenuItem, и так далее. В результате получим экранную форму с пунктами меню на русском языке.
Рассмотрим теперь создание всплывающего меню, появляющегося при щелчке по какому-либо компоненту нашей формы. В качестве примера, назначим всплывающее меню кнопке выхода. Для других компонентов процесс будет абсолютно аналогичным.
Размещено на http://www.allbest.ru/
Рис. 4.3. Новый узел jPopupMenu1
Размещено на http://www.allbest.ru/
Рис. 4.4. Содержание узла
В режиме дизайна (закладка Design ) выберем мышью в палитре компонентов (окно Palette в правом верхнем окне) компонент JPopupMenu, и перетащим его на экранную форму. Он там не появится, но в окне инспектора компонентов в дереве Other Components возникнет новый узел jPopupMenu1[JPopupMenu]. Если щелкнуть по узлу, окажется, что кроме самого компонентаjPopupMenu1 в нем ничего нет.
Щелкнем правой кнопкой мыши по этому узлу, и в появившемся всплывающем меню выберем Add/JMenuItem.
Рис. 4.5. Создание нового пункта всплывающего меню
После этого в дереве jPopupMenu1 возникнет узел jMenuItem1[JMenuItem], и в редакторе свойств компонентов можно задать значение свойству Text данного компонента. Введем текст "Выйти из программы".
Размещено на http://www.allbest.ru/
Рис. 4.6. Узел jMenuItem1
Размещено на http://www.allbest.ru/
Рис. 4.7. Свойства jMenuItem1
Далее уже известным нам способом зададим обработчик нажатия на этот пункт меню - выберем во всплывающем меню, возникающем при щелчке правой кнопкой мыши по имени jMenuItem1 в окне Inspector, пункт Events/ Action/ ActionPerformed. А в обработчике напишем оператор выхода из программы
System.exit(0);
Мы пока только создали всплывающее меню, которое доступно в нашей форме, но еще не назначили его никакому компоненту. Для того, чтобы назначить меню jPopupMenu1 кнопке JButton1, выделим ее, и в редакторе свойств компонентов в пункте componentPopupMenu нажмем мышью стрелку вниз, разворачивающую выпадающий список. Кроме значения <none>, назначенного по умолчанию этому свойству для каждого компонента, там имеется имя jPopupMenu1. Его мы и выберем.
Теперь всплывающее меню, состоящее из одного пункта " Выйти из программы", появится при щелчке правой кнопкой мыши по кнопке. Добавление других пунктов меню и назначение им обработчиков событий проводится абсолютно так же, как для jMenuItem1.
5. Создание нового класса
Пусть мы хотим создать в нашем проекте новый класс. Для этого щелкнем правой кнопкой мыши по имени нашего пакета, и выберем в появившемся всплывающем окне пункт New/Java Class…
Рис. 5.1. Создание нового класса. Шаг 1
Рис. 5.2. Создание нового класса. Шаг 2
Появится диалоговое окно создания нового класса Java. В нем следует задать имя создаваемого класса, заменив имя по умолчанию. Зададим имя Figure.
В качестве пакета, в котором расположен класс, будет автоматически задан пакет нашего приложения (если первоначальный щелчок правой клавишей был по имени этого пакета).
Кроме описанной выше процедуры для создания нового класса можно воспользоваться мастером создания нового класса в главном меню среды NetBeans ( File/New File…/Java Classes/Next> ). В результате появится то же диалоговое окно, но в выпадающем списке придется выбрать имя пакета.
После нажатия на кнопку Finish ("закончить") в редакторе исходного кода появляется заготовка класса.
Рис. 5.3. Заготовка нового класса
Если в класс требуется добавить метод, поле данных или конструктор, можно это делать вручную. Но удобнее добавлять методы с помощью среды разработки.
Рис. 5.4. Добавление в класс метода. Шаг 1
Щелчок правой клавиши мышки в области надписи Methods и выбор пункта Add Method…всплывающего окна приводит к появлению диалога, в котором можно путем установки галочек и выбора пунктов выпадающего меню задавать нужные параметры метода
Рис. 5.5. Добавление в класс метода. Шаг 2
Аналогичным образом добавляются новые поля ( Fields ) и конструкторы ( Constructors ), но щелчок правой клавишей мыши должен делаться в области надписей Fields или Constructors.
6. Документирование исходного кода в Java
Одной из важнейших частей написания программного обеспечения является документирование создаваемого кода. В Java для этих целей применяется средство, обеспечивающее поддержку на уровне синтаксиса языка программирования - специализированные комментарии. Они начинаются с комбинации символов /** и заканчиваются комбинацией символов */
Часть комментариев автоматически создает среда разработки.
Пример:
/**
* Creates new form GUI_application
*/
Средством обработки внедренных в исходный код комментариев и создания для класса справочных HTML-файлов является инструмент javadoc, входящий в состав JDK. Но в среде NetBeans удобнее пользоваться вызовом через главное меню: Build/Generate Javadoc for "…".Документационные комментарии бывают для:
· Пакетов (пока не функционируют).
· Классов.
· Интерфейсов.
· Пользовательских типов-перечислений (на уровне пакетов пока не функционируют, но можно использовать для типов, заданных в классах).
· Методов.
· Переменных.
Документационные комментарии пишутся непосредственно перед заданием соответствующей конструкции - пакета, класса, интерфейса, типа-перечисления, метода или переменной. Следует учитывать, что по умолчанию документация создается только для элементов, имеющих уровень видимости public или protected.
Пример фрагмента кода с документационными комментариями:
/**
* Пример приложения Java с документационными комментариями <br>
* В приложении заданы типы-перечисления Monthes и Spring и показано,
* как с ними работать.
* Кроме того, дан пример использования класса из другого пакета.
* @see enumApplication.Monthes Информация о типе-перечислении Monthes
* @see enumApplication.Spring
* @see enumApplication#m1
* @version Версия 0.1 Первоначальная версия, проверено при компиляции
* в среде NetBeans 5.5
* @author Вячеслав
*/
public class enumApplication extends javax.swing.JFrame {
int i=1;
/**
* Spring - задает перечисление из 3 весенних месяцев года: march,apr,may.
* <ul>
* <li>march
* <li>apr
* <li>may
* </ul>
* Идентификатор для марта записан отличающимся от соответствующего
* идентификатора в перечислении Monthes, а для апреля и мая записаны так
* же - чтобы подчеркнуть, что их пространства имен независимы.
*/
public enum Spring {march,apr,may};
/**
* Monthes - задает перечисление из 12 месяцев года: <br>
* jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec <br>
* (январь, февраль и т.д.)
*/
public enum Monthes {jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec};
Spring spr1= Spring.apr, spr2;
/**
*Переменная, иллюстрирующая работу с перечислениями
*/
public Monthes m1,m2=Monthes.mar,m3;
Имеется два типа кода внутри блока документационного комментария - HTML-текст и метаданные (команды документации, начинающиеся с символа @ ). Если пишется обычный текст, он рассматривается как HTML-текст, поэтому все пробелы и переносы на новую строку при показе приводятся к одному пробелу. Для того, чтобы очередное предложение при показе начиналось с новой строки, следует вставить последовательность символов <br>, называющуюся тегом HTML. Возможно использование произвольных тегов HTML, а не только тега переноса на новую строку: теги неупорядоченного списка <ul> и <li>, теги гиперссылок, изображений и т.д. В то же время не рекомендуется использовать заголовки и фреймы, поскольку это может привести к проблемам - javadoc создает на основе документационного кода собственную систему заголовков и фреймов. Кроме того, при преобразовании в HTML-документ из документационного кода удаляются символы"*", если они стоят на первом значимом месте в строке (символы пробелов не являются значимыми).
Для более подробного изучения тегов HTML следует читать справочную или учебную литературу по этому языку разметки документов. Соответствующие ссылки и документы можно найти, например, на сайте автора http://barsic.spbu.ru/www/comlan/html_r.html.
Команды документации (символы метаданных):
· @see ("смотри") - применяется для создания в документе гиперссылок на другие комментарии. Можно использовать для любых конструкций (классов, методов и т.д. ). Формат использования:@see ИмяКласса - для класса; @see ИмяКласса.ИмяПеречисления - для типа-перечисления, заданного в классе; @see ИмяКласса#ИмяЧлена - для метода или переменной; для интерфейса - аналогично классу. При этом имя класса или интерфейса может быть либо коротким, либо квалифицировано именем пакета.
· @version ("версия") - информация о версии. Используется для классов и интерфейсов. Формат использования: @version Информация о версии в произвольной форме.
· @author ("автор") - Информация об авторе. Используется для классов и интерфейсов. Формат использования: @author Информация об авторе в произвольной форме. Может включать не только имя, но и данные об авторских правах, а также об электронной почте автора, его сайте и т.д.
· @since ("начиная с") - Информация о версии JDK, начиная с которой введен или работоспособен класс или интерфейс. Формат использования: @since Информация в произвольной форме.
· @param (сокращение от parameter -"параметр") - информация о параметре метода. Комментарий/** @param … */ ставится в месте декларации метода в списке параметров перед соответствующим параметром. Формат использования: @param ИмяПараметра Описание.
· @return ("возвращает") - информация о возвращаемом методом значении и его типе. Формат использования: @return Информация в произвольной форме.
· @throws ("возбуждает исключение") - информация об исключительных ситуациях, которые могут возбуждаться методом. Формат использования: @throws ИмяКлассаИсключения Описание.
· @deprecated ("устаревшее") - информация о том, что данный метод устарел и в последующих версиях будет ликвидирован. При попытке использования таких методов компилятор выдает программисту предупреждение ( warning ) о том, что метод устарел, хотя и компилирует проект. Формат использования: @deprecated Информация в произвольной форме.
Признаком окончания команды документации является начало новой команды или окончание комментария.
Пример документации, созданной для пакета, из которого взят приведенный выше фрагмент кода:
Рис. 6.1. Головная страница файлов документации
Рис. 6.2 Страница описания элементов пакета java_enum_pkg
Рис. 6.3 Страница описания класса enumApplication
Обратите внимание, что в краткой сводке (summary) приводятся только начальные строки соответствующей информации по элементам пакета или класса. Полную информацию можно прочитать после перехода по гиперссылке в описании соответствующего элемента. Поэтому важно, чтобы первые 2-3 строки информации содержали самые важные сведения.
7. Основные компоненты пакетов swing и awt
Пока мы научились работать только с формами, кнопками и всплывающими меню. Перечислим еще ряд полезных компонентов.
Во-первых, следует остановиться на том, что в палитре компонентов NetBeans предлагается три категории компонентов: из библиотеки Swing (пакет swing ), библиотеки AWT (пакет awt ), и категория Beans. В Sun Java Studio Enterprise имеется еще одна категория - Layouts, "менеджеры размещения", - компоненты, отвечающие за способ расположения и выравнивания компонентов на форме.
Библиотека Swing является основной для большинства современных графических приложений Java. В ней предлагаются следующие компоненты (перечислены в том порядке, в каком они возникают в палитре компонентов):
Таблица 7.1
№ |
Компонент |
Назначение компонента |
|
1 |
JLabel |
"Метка" - вывод однострочного неформатированного текста |
|
2 |
JButton |
"Кнопка" - кнопка с текстом и/или с картинкой |
|
3 |
JToggleButton |
"Защелкивающаяся кнопка" - кнопка с фиксацией. Может быть одной из нескольких таких кнопок в группе, в этом случае нажатие одной кнопки вызывает отпускание другой. Работа группы обеспечивается компонентом ButtonGroup, который должен быть перетащен на форму, а затем назначен свойству buttonGroup. |
|
4 |
JCheckBox |
"Чекбокс" - пункт выбора с независимой фиксацией. |
|
5 |
JRadioButton |
"Радиокнопка" - пункт выбора с зависимой фиксацией, должен быть одним из нескольких в группе. Работа группы обеспечивается компонентом ButtonGroup. |
|
6 |
ButtonGroup |
Обеспечивает работу групп компонентов JToggleButton или JradioButton. |
|
7 |
JComboBox |
"Комбобокс" - выпадающий список. |
|
8 |
JList |
Прокручивающийся список. |
|
9 |
JTextField |
"Текстовое поле" - однострочный пункт ввода и редактирования текста. |
|
10 |
JTextArea |
"Текстовая область" - многострочный пункт ввода и редактирования текста. |
|
11 |
JPanel |
"Панель" - группирующий компонент, позволяющий располагать на себе другие компоненты. Передвижение панели перемещает вместе с ней все расположенные на ней компоненты. По умолчанию свойство layout ("размещение") установлено как FlowLayout - "в виде потока". Для простых задач вместо этого компонента лучше использоватьJLayeredPane. |
|
12 |
JTabbedPane |
"Панель с закладками" - каждый положенный на нее компонент показывается в отдельной закладке. Чтобы разместить на одной закладке несколько компонентов, сначала положите на панель с закладками обычную панель. Для того, чтобы создать последующие закладки, выделите панель с закладками, вызовите правой кнопкой мыши всплывающее меню, пункт Add From Palette ("добавить из палитры"), и добавьте еще одну панель или другой компонент. |
|
13 |
JScrollBar |
Независимая полоса прокрутки. Используется редко - для программно управляемой прокрутки содержимого компонентов, для которых отсутствуют встроенные полосы прокрутки. |
|
14 |
JScrollPane |
"Панель с полосами прокрутки" |
|
15 |
JMenuBar |
"Меню формы" - предназначено для расположения в нем компонентов типа JMenu (заголовков меню). |
|
16 |
JPopupMenu |
"Всплывающее меню" - предназначено для расположения в нем компонентов типа JMenuItem (пунктов меню). |
|
17 |
JSlider |
"Ползунок". Используется для плавной регулировки числовых величин, а также связанных с ними программно регулируемых изменений. |
|
18 |
JProgressBar |
"Прогрессбар" - полоса показа доли выполнения задачи. Показывает уровень, отражающий долю выполнения задачи |
|
19 |
JSplitPane |
"Панель с разделителем" - панель, состоящая из двух частей, между которыми имеется линия разделителя, которую можно перетаскивать мышью, меняя взаимный размер частей. |
|
20 |
JFormattedTextField |
"Поле ввода форматированного текста" |
|
21 |
JPasswordField |
"Поле ввода пароля" - вводимый текст отображается звездочками. |
|
22 |
JSpinner |
"Спиннер" - поле ввода числа с кнопками увеличения/уменьшения. |
|
23 |
JSeparator |
"Сепаратор" - разделительная линия. Используется в декоративных целях для разделения рабочих областей формы и других группирующих компонентов. |
|
24 |
JTextPane |
"Текстовая панель". По умолчанию автоматически переносит текст на новую строку. А не располагает в одну строку с показом горизонтального скроллера, как это делает JTextArea. |
|
25 |
JEditorPane |
"Панель текстового редактора" |
|
26 |
JTree |
"Дерево" - показывает дерево, в котором каждая ветвь может быть с иконками и текстом, а узлы разворачиваются и сворачиваются. |
|
27 |
JTable |
"Таблица" - показ текстовой таблицы. Имеет возможность заполнения значениями по умолчанию на этапе проектирования. |
|
28 |
JToolBar |
"Тулбар" - панель инструментов. Обычно на нем размещают кнопки JToggleButton, для которых назначены иконки. |
|
29 |
JInternalFrame |
"Дочернее окно" - окно многооконного приложения. Его можно перемещать в пределах родительского окна - главного окна приложения. В настоящее время такой стиль приложений практически не используется. |
|
30 |
JLayeredPane |
"Панель с абсолютным позиционированием элементов" |
|
31 |
JDesktopPane |
"Панель - рабочий стол". Еще один тип панели с абсолютным позиционированием элементов. |
|
32 |
JOptionPane |
"Диалоговая панель" - предназначена для показа диалоговых форм. В отличие от большинства других компонентов работа идет с помощью методов класса. Имеются вызовы диалогов: · С сообщением: · javax.swing.JOptionPane.showMessageDialog(null, "Кнопку нажали"); JOptionPane.showMessageDialog(null,"Привет!", "Заголовок сообщения", JOptionPane.INFORMATION_MESSAGE); · С подтверждением: int option=javax.swing.JOptionPane.showConfirmDialog(null,"Продолжить?"); Проверка, какую кнопку нажали или диалог закрыли без осуществления выбора, осуществляется сравнением с константами javax.swing.JOptionPane.NO_OPTION, CANCEL_OPTION, CLOSED_OPTION, OK_OPTION, YES_OPTION · С предложением ввести значение: String input=javax.swing.JOptionPane.showInputDialog(null,"Введите значение:"); - при отказе от ввода возвращается null. Первый параметр - имя формы, в которой показывается диалог. Если он null - используется форма по умолчанию (главная форма приложения). Существуют варианты указанных выше методов, позволяющие при вызове задавать дополнительные параметры диалога (заголовок, надписи на кнопках и др.). |
|
33 |
JColorChooser |
"Диалог выбора цвета" - предназначен для выбора пользователем цвета. |
|
34 |
JFileChooser |
"Диалог выбора файла" - предназначен для выбора пользователем файлов. Перед использованием требуется положить его на какую-нибудь диалоговую форму ( JDialog, JFrame ) или какой-нибудь группирующий компонент формы. |
|
35 |
JFrame |
"Экранная форма". Показывается вызовом вида jFrame1.setVisible(true) ; |
|
36 |
JDialog |
"Диалоговая форма". Показывается вызовом вида jDialog1.setVisible(true) ; |
Очень часто в приложении требуется вывести служебную информацию. В старых версиях Java для этого служил вызов System.out.println("Текст сообщения"). В учебных проектах и при выводе отладочной информации этот метод до сих пор удобен. Но предоставлять таким образом информацию конечному пользователю представляется анахронизмом. Для выдачи пользователю информационного сообщения лучше использовать вызов
JOptionPane.showMessageDialog(null,"Привет!","Заголовок сообщения",
JOptionPane.INFORMATION_MESSAGE);
Если требуется вывести предупреждение об ошибке, последний параметр должен иметь значение JOptionPane.ERROR_MESSAGE, другое предупреждение - JOptionPane.WARNING_MESSAGE, вопрос - JOptionPane.QUESTION_MESSAGE. Наконец, если не требуется сопровождать вопрос иконкой на диалоговой панели, параметр должен быть JOptionPane.PLAIN_MESSAGE.
Библиотека компонентов AWT (Abstract Window Toolkit - Абстрактный Инструментарий графического Окна) является устаревшей по сравнению с библиотекой Swing, хотя сам пакет awt до сих пор является основой графики Java. В библиотеке AWT имеются практически те же компоненты, что и в Swing, но в меньшем количестве и в более примитивном варианте - с худшим дизайном и меньшей функциональностью.
Единственный компонент AWT, у которого нет прямого аналога в Swing - компонент типа Canvas - "холст для рисования". Он обеспечивал вывод графических примитивов. Например, следующим образом:
java.awt.Graphics g=canvas1.getGraphics();
g.drawLine(10,10,100,100);
В Swing для этих целей можно рисовать по любому компоненту, например, по панели, или даже по кнопке:
java.awt.Graphics g=jPanel1.getGraphics();
g.drawLine(10,10,100,100);
g=jButton3.getGraphics();
g.drawLine(10,10,100,100);
Еще одна категория, на которой следует остановиться, это компоненты Layout - менеджеры размещения. Разработчики Java предложили оригинальную, но очень неоднозначную идею организации расположения компонентов на форме. Вместо того, чтобы явно указывать позиции компонентов на этапе проектирования или работы программы, и использовать якоря ( anchors ) для привязки краев компонентов к краям группирующего компонента, как это делается в других языках программирования, предлагается использовать тот или иной менеджер размещения. При изменении размера формы взаимное расположение компонентов будет меняться в зависимости от типа менеджера. Например, "обычное" размещение с фиксированным положением достигается с помощью размещения на форме менеджера AbsoluteLayout. В NetBeans это делается через пункт Set Layout всплывающего меню, как показано на рисунке. По умолчанию действует режим Free Design - "свободный дизайн". Если установить менеджер размещения AbsoluteLayout, в редакторе свойств компонентов оказываются доступны свойства x и y - координаты компонентов.
Использовать якоря все же можно, но с ограниченными возможностями и только в менеджере размещения Free Design - в других менеджерах они не работают. Для использования якоря следует щелкнуть с помощью правой клавиши мыши по компоненту, расположенному на форме (например, кнопке), и в появившемся меню выбрать пункт Anchors. Якорь привязывает компонент к соответствующей стороне формы.
Рис. 7.1. Выбор менеджера размещения
Рис 7.2. Установка привязки к краям формы - якорей
Left - привязка к левому краю формы, Right - к правому, Top - к верхнему, Bottom - к нижнему. По умолчанию менеджер сам выбирает варианты привязки, показывая их пунктирными линиями.
Размещено на Allbest.ru
Подобные документы
Основные принципы написания оконных приложений с графическим интерфейсом на языке Java в среде Eclipse. Управление компоновками компонентов: показ диалоговых окон, вывод графической информации. Структура приложения и размещение элементов интерфейса.
лабораторная работа [1,1 M], добавлен 01.05.2014Разработка компьютерного приложения "Кипящая жидкость" с применением навыков программирования на языке Java. Проектирование алгоритма для решения поставленной задачи, его предметная область. Создание приложения с графическим пользовательским интерфейсом.
отчет по практике [3,0 M], добавлен 29.10.2015Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.
курсовая работа [276,1 K], добавлен 19.07.2014Разработка технологии и средств реализации Java-приложения, сокращающих трудоемкость создания и гибкость модификации интерфейса пользователя. Использование XML-документов для описания внешнего представления, элементов управления и событий экранных форм.
дипломная работа [2,8 M], добавлен 19.08.2011Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.
курсовая работа [197,5 K], добавлен 19.11.2009История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.
курсовая работа [168,1 K], добавлен 27.09.2013Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.
курсовая работа [12,4 K], добавлен 18.06.2008Java Runtime Environment - минимальная реализация виртуальной машины, необходимая для исполнения приложений, без компилятора и других средств разработки. Компиляция исходного кода через командную строку. Основные моменты создания игрового 2d-приложения.
курсовая работа [2,1 M], добавлен 26.04.2014Архитектура Java и Java RMI, их основные свойства, базовая система и элементы. Безопасность и виртуальная Java-машина. Интерфейс Java API. Пример использования приложения RMI. Работа с программой "Calculator". Универсальность, портативность платформ.
курсовая работа [208,6 K], добавлен 03.12.2013Описание пакета прикладной программы Net Beans 8.1. Разработка пользовательского интерфейса апплета. Создание рамочных окон на базе фреймов библиотеки java.swing. Изменение цвета текстовых данных. Проектирование и создание инфологической модели апплета.
контрольная работа [1,8 M], добавлен 11.07.2016