- •Задание на выполнение работы
- •Контрольные вопросы
- •С помощью какого метода можно создать диалоговое окно?
- •Принцип построения оконного приложения
- •Значение метки jLabel?
- •Свойства кнопки jButton?
- •Что такое поле для ввода пароля jPasswordField?
- •Что такое панель прокрутки jScrollPane?
- •Выпадающий список jComboBox
- •Что из себя представляет ползунок jSlider?
Федеральное агентство связи
Федеральное государственное бюджетное образовательное
учреждение высшего образования
Поволжский государственный университет
телекоммуникаций и информатики
Кафедра Информационных систем и технологий
Лабораторная работа №8
По дисциплине «Инструментальные средства информационных систем»
Тема: «Разработка оконных приложений (форм) Java-приложений»
Руководитель доцент к. т. н.
__________________ Никитин К.А.
Самара 2018
-
Цель работы Получение практических навыков создания оконного приложения на языке Java.
-
Задание на выполнение работы
-
Создать исполняемый файл, запрашивающий имя и возраст пользователя, выводящий ответное сообщение в диалоговом окне.
package com.company; import javax.swing.*; //библиотека для создания графического интерфейса import java.awt.*; //исходная платформо-независимая оконная библиотека графического интерфейса import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.regex.Matcher; //движок для операции сравнения import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Pattern p = Pattern.compile("[a-zA-Zа-яА-Я]*"); //регулярное выражение для имени Pattern l = Pattern.compile("^\\d{1,2}|100$"); //регулярное выражение для возраста Matcher m; JFrame Window = new JFrame("Регистрация"); //создать экземпляр класса фрейма (окно верхнего уровня) JPanel panel = new JPanel(); //создать экземпляр класса окна panel.setLayout(new GridLayout(6, 1, 5, 10)); //задать количество строк, столбцов и отступы JLabel label1 = new JLabel("name");//создать экземпляр класса метки JTextField nameField = new JTextField(); //создать экземпляр класса текстового поля для Имени JTextField ageField = new JTextField(); //создать экземпляр класса текстового поля для Возраста JLabel label2 = new JLabel("age"); //создать экземпляр класса надписи label1.setText("Введите ваше имя"); //установить для надписи Имя текст label2.setText("Введите ваш возраст"); //установить для надписи Возраста текст JButton accept = new JButton(); //создать экземпляр класса кнопки Принять accept.setText("Принять"); //установить для кнопки текст accept.addActionListener(new ActionListener() { @Override // добавить для кнопки Принять метод, описывающий действия public void actionPerformed(ActionEvent e) { //создать метода для книпки Принять String name = nameField.getText();//получить текст поля Имя String age = ageField.getText(); //получить текст из поля Возраст boolean isName = p.matcher(name).matches(); //соотвествие регулярному выражению boolean isAge = l.matcher(age).matches(); //соотвествие регулярному выражению if (isName&&isAge) //если имя и возраст корректны { JFrame result = new JFrame("Приветствие"); //создать экземпляр класса фрейм JLabel labelRes = new JLabel("Result"); //создать экземпляр класса надпись labelRes.setText(" Вас зовут " + name + " и ваш возраст " + age); //установить текст для надписи result.add(labelRes); //добавить надпись в фрейм result.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //закрыть все окна при закрытии диалогового окна result.setSize(300, 200);//установить ширину, высоту окна result.setVisible(true); //установить видимость окна } else { //если данные введены некорректно nameField.setText("Некорректные данные"); //установить текст для надписи ageField.setText(" "); //установить текст для надписи } } }); panel.add(label1); //добавить надпись Имени panel.add(nameField); //добавить текстовое поле Имени panel.add(label2); //добавить надпись Возраста panel.add(ageField); //добавить текстовое поле Возраста panel.add(accept); //добавить кнопку Принять
Window.add(panel); //добавить окно Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //закрыть все окна при закрытии диалогового окна Window.setSize(400, 300); //установить ширину и высоту окна Window.setVisible(true); //установить видимость } }
№ варианта |
Задание на выполнение |
5 |
Создать форму для вывода чисел в виде узора |
import java.awt.EventQueue;//класс, который обеспечивает очередь событий глобально import javax.swing.JFrame; //для создания основного контейнера для приложения import javax.swing.JLabel; //для создания метки import javax.swing.JTextArea; //для создания поля ввода import javax.swing.JSpinner; //для создания счетчика с выбором значения import javax.swing.SpinnerNumberModel; //модель определяет набор числовых значений import javax.swing.event.ChangeEvent; //используется, чтобы уведомить, что состояние изменило в конечном счете источник. import javax.swing.event.ChangeListener; //слушатель ChangeListener реагирует на изменение состояния объекта public class Main { private JFrame frame; //создание приватного объекта-фрейма JSpinner spinnerSize; //создание счетчика с выбором значений JTextArea textAreaTracery; //создание поля ввода public static void main(String[] args) { EventQueue.invokeLater(new Runnable(){ //SwingUtilities.invokeLater предназначена для запуска асинхронной операции. Она сохраняет действие, и запускает его на одной из следующих итераций цикла сообщений. public void run(){//создание метода, не возвращающего значения try{ //начало блока кода, который потенциально может привести к ошибке Main window = new Main(); //создание объекта класса Main window.frame.setVisible(true); //установить видимость для фрейма } catch (Exception e){ //начало блока кода, предназначенного для перехвата и обработки исключений e.printStackTrace();//используется для подробного вывода ошибок в консоли } } }); } public Main(){ //создание экземпляра класса Main initialize(); //объявление метода } private void initialize(){ //описание метода frame = new JFrame(); //объявление фрейма frame.setBounds(100, 100, 450, 300); //методу передаются четыре параметра, определяющих расположение и размеры компонента frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //это нужно для того чтобы при закрытии окна закрывалась и программа, иначе она останется висеть в процессах frame.getContentPane().setLayout(null); //getContentPane панель содержимого, занимающая все пространство окна //setLayout(null) самостоятельное расположение компонентов, добавляемых на панель JLabel label = new JLabel( //создание метки "Размерность узора: "); label.setBounds(35, 26, 121, 14); //точное размещение компонентов frame.getContentPane().add(label); //создание панели с полосами прокрутки, в нее помещается объект label, панель добавляется в панель содержимого окна. JLabel label_1 = new JLabel( //создание метки "Узор:"); label_1.setBounds(35, 74, 46, 14); //точное размещение компонентов frame.getContentPane().add(label_1); //создание панели с полосами прокрутки, в нее помещается объект label, панель добавляется в панель содержимого окна. textAreaTracery = new JTextArea(); //создание поля ввода textAreaTracery.setBounds(108, 74, 213, 177); //точное размещение компонентов frame.getContentPane().add(textAreaTracery); //создание панели с полосами прокрутки, в нее помещается объект textAreaTracery, панель добавляется в панель содержимого окна. spinnerSize = new JSpinner(); //создание счетчика с выбором значения spinnerSize.addChangeListener(new ChangeListener() { //создание слушателя, реагирующего на изменение состояния объекта @Override public void stateChanged(ChangeEvent e) { //объявление приватного метода int size = (Integer)spinnerSize.getValue(); //создание переменной со значением, определяемым выбранным в счетчике числом String str = ""; //создание строки for (int i=1; i<=size; i++){ //цикл для выода числа узором for (int j=1; j<=i; j++){ str = str + j + " "; } str = str + "\n"; } textAreaTracery.setText(str);//задание нового текста надписи } }); spinnerSize.setModel(new SpinnerNumberModel(0, 0, 9, 1)); //задание границ для счетчика spinnerSize.setBounds(181, 23, 46, 20); //точное размещение компонентов frame.getContentPane().add(spinnerSize); //создание панели с полосами прокрутки, в нее помещается объект spinnerSize, панель добавляется в панель содержимого окна. } }