Приложение "Очередь"
Разработка приложения для визуализации структуры данных очереди с возможностью добавления и удаления элементов. Алгоритм реализации очереди. Описание JavaFX Scene Builder. Алгоритм реализации открытия и сохранения файлов. Анализ методов отладки системы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 20.09.2016 |
Размер файла | 906,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Курсовой проект по дисциплине
«Объектно-ориентированное программирование»
ПРИЛОЖЕНИЕ «ОЧЕРЕДЬ»
Реферат
Курсовая работа, 28 страниц, 15 рисунков, 3 таблицы, 6 источников, 1 приложение.
Ключевые слова: XML, FXML, Java, JavaFX, коллекции, объектно-ориентированное программирование.
Цель работы - разработка приложения для визуализации структуры данных очереди с возможностью добавления и удаления элементов.
В процессе разработки приложения был более детально изучен зык программирования Java, получены навыки работы с форматом данных XML и программой JavaFX Scene Builder 2.0.
Результат: на основе изученных данных был разработан, протестирован и отлажен программный продукт, реализующий структуру данных очередь.
Введение
Очередь - это структура данных очень напоминающую обычную очередь из людей, тот, кто пришел первым, обслуживается первым (FIFO - First Input First Output.). Добавлять новые элементы можно только в конец очереди, забирать элементы можно только из начала. Удалять элементы из середины очереди - нельзя.
Использование очереди в программировании почти соответствует ее роли в обычной жизни. Очередь практически всегда связана с обслуживанием запросов, в тех случаях, когда они не могут быть выполнены мгновенно. Очередь поддерживает также порядок обслуживания запросов.
Цели и задачи курсовой работы
Цели:
1. Закрепление знаний и умений, полученных в процессе теоретического изучения языка Java.
2. Знакомство со структурой данных «очередь».
3. Приобретение и совершенствование практических навыков работы в JavaFX Scene Builder 2.0.
4. Знакомство и работа с форматом XML, его использование в реализации приложения.
Задачи:
1. Использование данных из файлов приложением.
2. Занесение полученных данных в очередь.
3. Возможность добавить элементы в очередь из самого приложения.
4. Отладка программы.
5. Составление документации к программе.
.Информация о проделанной работе
Ниже представлена сокращенная таблица 1.1 о проделанной работе, в соответствии с графиком.
Таблица 1.
Недели |
Краткое описание работы |
|
1 - 3 недели(17.02.2016. - .28.02.2016.) |
Получение задач для написания курсовой работы и календарного плана.Изучение документации по используемым программным средствам.Изучение работы с программными средствами.Составление ТЗ. |
|
3 - 7 недели(28.02.2016 - 23.03.2016.) |
Проектирование системы.Создание прототипа интерфейса. |
|
7 - 12 недели(23.03.2016 -23.04.2016.) |
Кодирование и тестирование системы. |
|
12 - 16 недели(23.04.2016 -15.05.2016.) |
Тестирование системы. |
|
16 неделя(15.05.2016 - 20.06.2016.) |
Написание отчета о проделанной работе.Создание презентации по отчету. |
1.Основная часть
1.1 Постановка задачи
Разработать приложение для реализации и визуализации структуры данных «очередь». С возможностью добавлять новые элементы из файлов.
1.2Технические программные средства
При создании приложения использовалась JavaFX Scene Builder 2.0. JavaFX - платформа для создания RIA, позволяет строить унифицированные приложения с насыщенным графическим интерфейсом пользователя для непосредственного запуска из-под операционных систем, работы в браузерах и на мобильных телефонах, в том числе работающих с мультимедийным содержимым.
Версия JavaFX Scene Builder - 2.0.
Созданные посредством JavaFX Scene Builder приложения будут способны работать на следующих платформах
Платформа |
CPU архитектура |
Версия |
JavaFX |
|
Windows Vista |
x86 и x86-64 |
SP2 |
2.0 |
|
Windows XP |
x86 и x86-64 |
SP3 |
2.0 |
|
Windows 7 |
x86 и x86-64 |
SP1 |
2.0 |
|
Mac OS X |
64-бит |
10.7.3+ |
2.2 |
|
Linux |
32 и 64 бит |
gtk2 2.18+ |
2.2 |
|
Solaris |
32 и 64 бит |
10 |
2.2 |
Приложение разрабатывалось и тестировалось на компьютере с ОС Windows 10.
1.4 Работа с JavaFX Scene Builder.
Технология JavaFX была впервые продемонстрирована корпорацией Sun Microsystems на конференции JavaOne в мае 2007 года. 4 декабря 2008 года вышла версия 1.0 платформы.
1.4.1Описание JavaFX Scene Builder
Используя электронный ресурс [4] мы можем описать JavaFX Scene Builder следующим образом.
JavaFX Scene Builder - представляет собой визуальный инструмент, который позволяет пользователям быстро создавать интерфейс для JavaFX приложений, без кодирования. Пользователи могут перетаскивать компоненты интерфейса в рабочую область, изменять их свойства, применять таблицы стилей, а код FXML для интерфейса генерируется автоматически в фоновом режиме. Результатом является FXML файл, который может быть объединён с проектом Java путем связывания пользовательского интерфейса к логике приложения.
Ключевые особенности
JavaFX Scene Builder включает в себя следующие основные функции:
· Позволяет быстро создать пользовательский интерфейс без необходимости написания исходного кода.
· Легкая интеграция с любым Java IDE, поскольку она представляет собой автономный инструмент разработки.
· Автоматическая генерация FXML кода. Сгенерированный код хранится в отдельном файле и может быть использован в логике приложения, а также в таблице стилей.
· Возможность добавления пользовательский компонентов графического интерфейса в библиотеку. Также библиотека компонентов может быть расширена благодаря возможности импорта сторонних JAR-файлов, FXML файлов.
· JavaFX Scene Builder Kit снабжен Scene Builder 2.0. Комплект представляет собой API, который позволяет интегрировать Scene Builder непосредственно в графический интерфейс, таких Java IDE, как NetBeans, IntelliJ и Eclipse.
1.4.2 Алгоритм реализации очереди
Алгоритм очереди реализуется в классе «QueueRealization» на основе класса коллекции «Queue». Статичные метод getIntegers служит для того, чтобы мы могли получить доступ к элементам очереди из разных классов, т.е. чтобы у нас была одна и та же очередь для всех классов, которые используют методы коллекции «Queue». Сама очередь объявлена приватной, чтобы сохранялся принцип инкапсуляции.
Рис.1
На Рисунке 2 представлен фрагмент реализации добавления элементов через текстовое поле. Сначала мы вызываем метод getIntegers класса QueueRealization, а потом вызываем метод для добавления элемента (add) и записываем в очередь число, которое ввели в текстовом поле, преобразовав его из «String» в «Integer» с помощью метода «parseInt». Если добавление прошло успешно, выводим на метку «Элемент добавлен». И вызываем метод «showQueue» (Рисунок 3), чтобы вывести элементы. Если мы введем в текстовое поле не число, а строку, то, выводим исключение.
Рис.2
В этом методе происходит вывод элементов, добавленных из файла или же введенных из текстового поля.
Рис.3
Данный метод удаляет элемент, который находится в самом начале.
Рис.4
Этот метод позволяет удалить всю очередь. Сначала проверяем есть ли элементы в очереди, если есть, то удаляем.
Рис.5
1.4.3 Алгоритм реализации открытия и сохранения файлов
Метод для открытия файла.
Рис.6
Метод для сохранения элементов очереди в TXT файле.
Рис.7
В этом методе мы считываем элементы, которые находятся в XML файле, и добавляем в очередь.
Рис.8
Этот метод служит для сохранения введенной очереди в XML файле.
Рис.9
1.5.Интерфейс системы
Рис.10 - Основное окно для работы с программой
Основные возможности:
- Кнопка «Добавить» добавляет элемент в очередь. Для того, чтобы самому добавить элемент, нужно ввести число в текстовое поле и нажать «добавить».
- Кнопка «Удалить» удаляет самый первый элемент, который находится в очереди.
- Кнопка «Вывести» выводит элементы на текстовую арену, и также выводит элементы, которые мы добавили из файла.
- Кнопка «Новая очередь» удаляет все элементы очереди, т.е. очищает его.
Вывод добавленных элементов осуществляется сразу, т.е. нету необходимости каждый раз нажимать кнопку «Вывести».
Рис.11
Удаление элемента также осуществляется сразу.
Рис.12
В строке «Файл» содержатся элементы управления, которые позволяют открыть файл с элементами очереди, сохранять введенную очередь и с возможностью выйти из программы.
Рис.13
Нажав «Открыть файл» открывается диалоговое окно, в котором мы можем выбрать файл, с элементами очереди, для открытия.
Если нажать кнопку «Сохранить файл», то открывается диалоговое окно, в котором мы можем сохранить введенную очередь.
Рисунок 14 - Пример сохранения очереди в XML
1.6Технология разработки программного изделия
Архитектура приложения состоит из двух систем- системы основного окна и системы меню.
Характеристики архитектуры данного приложения:
- Базовая архитектурная парадигма: объектно - ориентированная.
- Языковая парадигма (каждой системы) - высокоуровневая (язык программирования высокого уровня Java)
- Форматы использования данных - XML текстовый формат обмена данными
1.6.1Отладка системы
Цель отладки - исправление выявленных ошибок и недочетов в работе программы. За время отладки все вышеописанные ошибки и нижеописанные недочеты были исправлены. Результаты отладки представлены в таблице 2.1
Таблица 2.
Действие |
В чем заключается ошибка |
Способ исправления |
|
Добавляем вместо числа строку. |
Элемент не добавлялся в очередь, а выводилось исключение. |
Использование try-catch в основном блоке метода добавления «NumberFormatException». И предупреждение пользователя. |
|
Попытка добавить пустую строку |
Выводилось исключение при попытке сделать это. |
Использование проверки того, что вводит пользователь. |
|
Попытка открыть файл не того формата. |
При попытке открыть файл, программа выдавала исключение. |
Добавление фильтра для того, чтобы видеть файл строго определенного формата. |
|
Добавление элементов в очередь из файла. |
Так как строка меню и основное окно это два разных FXML файла. То при попытке добавления элементов из файла меню, получалось, что создалась новая очередь и поэтому элементы не выводились в текстовую арену. |
Сама коллекция «Queue» была сделана статической и метод для получения элементов из этой коллекции тоже был сделан статическим. |
Заключение
очередь данные java алгоритм
В результате написания курсовой работы были приобретены некоторые практические навыки, такие как: изучение интегрированной среды разработки программного обеспечения JavaFX Scene Builder, более глубоко была изучена Intellij IDEA, работа с форматом данных XML, составление документации и работа с ней. Все полученные знания позволят продолжить изучение своей предметной области более углубленно и досконально.
Источники информации
1. Java. Объектно-ориентированное программирование для магистров и бакалавров [Текст] : учебное пособие для изучающих объектно-ориентированное программирование в вузе / А. Н. Васильев. - Санкт-Петербург [и др.]: Питер, 2013. - 395 с.
2. Лекция 11: Структуры данных: общее понятие, реализация. Простейшие структуры данных: очередь, стек. Использование стека и обратная польская запись [Электронный ресурс] Режим доступа: http://www.intuit.ru/studies/courses/2193/67/lecture/1980?page=3#sect6 (дата обращения 15.05.2016)
3. Структуры данных и алгоритмы Java [Текст] : / Р. Лафоре - 2-е изд. - Санкт-Петербург [и др.] : Питер, 2014. - 701 с.
4. Учебник по JavaFX 8 (Русский) [Электронный ресурс] Режим доступа: http://code.makery.ch/library/javafx-8-tutorial/ru/ (дата обращения 5.05.2016)
5. JavaFX Scene Builder: Getting Started with JavaFX Scene Builder [Электронный ресурс]Режим доступа: http://docs.oracle.com/javase/8/scene-builder-2/get-started-tutorial/overview.htm#JSBGS164 (дата обращения 10.05.2016)
6. Java™ Platform, Standard Edition 7 API Specification [Электронный ресурс] Режим доступа: https://docs.oracle.com/javase/7/docs/api/ (дата обращения 22.05.2016)
Приложение А
Структура программы.
Рис.15
Код класса QueueRealization.
package com.queue;
import java.util.ArrayDeque;
import java.util.Queue;
public class QueueRealization {
private static Queue<Integer> integers = new ArrayDeque<>();
/**
* Статический метод для получения доступа к элементам очереди
* */
public static Queue<Integer> getIntegers() {
return integers;
}
}
Код класса Root_Controller
package com.queue;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import java.util.*;
/**
* Created by Fizyli on 01.05.2016.
*/
public class Root_Controller {
/**
* Сюда вводим значения для добавления в очередь
*/
@FXML
private TextField textarea;
/**
* Сюда выводим очередь
*/
@FXML
private TextArea TA;
/**
* Метка для информирования о произведенных действиях
* сюда записываем возможные действия которые произошли
*/
@FXML
private Label infoLabel;
/**
* Метод для добавление элементов в очередь
*/
@FXML
public void addElementQueue() {
try {
QueueRealization.getIntegers().add(Integer.parseInt(textarea.getText()));
infoLabel.setText("Элемент добавлен");
showQueue(); //Вызываем метод showQueue чтобы выводить элементы в текстовую арену
} catch (NumberFormatException e) { //Выводим исключение если ничего не введено или введена строка
if (textarea.getText().equals("")) { //Если ввод пустой, выводим сообщение о необходимости ввести число
infoLabel.setText("Введите число");
} else { //Иначе проверяем правильность ввода
infoLabel.setText("Проверьте правильность ввода");
}
}
}
/**
* Метод для показа элементов очереди открытых с файла
*/
@FXML
public void showQueue() {
TA.setText(""); //Каждый раз при нажатии кнопки, очищаем поле вывода
if (QueueRealization.getIntegers().isEmpty()) {//Если очередь пуста, выводим сообщение об этом
infoLabel.setText("Очередь пуста");
}
for (int entry : QueueRealization.getIntegers() //Сохраняем элементы коллекции в entry и выводим в TA
) {
TA.appendText(entry + " "); //Выводим очередь через пробел
TA.setWrapText(true); //устанавливаем параметр true чтобы при выводе текст переносился на следующую строку
}
}
/**
* Метод для удаления элементов очереди
*/
@FXML
public void removeElementQueue() {
infoLabel.setText("Элемент удален ");
try {
QueueRealization.getIntegers().remove(); //Удаляем элемент из очереди при нажатии на кнопку
showQueue(); //Вызываем метод showQueue чтобы удалять элементы из текстовой арены
} catch (NoSuchElementException e) { //при отсутвии элементов выводим исключение
infoLabel.setText("Очередь пуста");
}
}
/**
* Метод для очистки очереди
*/
@FXML
public void deleteAllElements() {
try {
if (QueueRealization.getIntegers().isEmpty()) {//Если очередь пуста выводим на label
infoLabel.setText("Очередь пуста");
} else {
while (!QueueRealization.getIntegers().isEmpty()) {//пока очередь не пуста, удаляем все элементы
TA.setText(""); //Очищаем поле вывода
QueueRealization.getIntegers().remove();
infoLabel.setText("Очередь очищена");
}
}
} catch (NoSuchElementException e) {//Если очередь изначально пуста, выводим исключение
infoLabel.setText("Очередь пуста");
}
}
}
Код класса Root_Menu_Controller
package com.queue;
import javafx.fxml.FXML;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.Pane;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import mainClass.MainApp;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
/**
* Created by Fizyli on 01.05.2016.
*/
public class Root_Menu_Controller {
/**
* Сюда сохраняется путь к файлам
*/
private File file;
private String line;
@FXML
private Label label;
/**
* Метод для открытия TXT файла
*/
@FXML
private void setOpenFile() {
FileChooser openFile = new FileChooser();
//Создаем фильтр чтобы открывать только файлы с форматом TXT
FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
//Добавляем фильтр
openFile.getExtensionFilters().add(filter);
file = openFile.showOpenDialog(new MainApp().getPrimaryStage()); //Открываем диалоговое окно при нажатии на кнопку
//Считывем файл
try {
InputStream stream = new FileInputStream(file);
//Создаем объект класса InputStreamReader на основе объекта stream
InputStreamReader sReader = new InputStreamReader(stream);
//Создаем объект класса BufferedReader на основе объекта sReader
BufferedReader read = new BufferedReader(sReader);
while ((line = read.readLine()) != null) { //Считываем содержимое файла
QueueRealization.getIntegers().add(Integer.parseInt(line)); //Добавляем то, что считали в очередь
}
} catch (IOException e) {
}
}
/**
* Метод для сохранения элементов очереди в TXT файле
*/
@FXML
private void handleSaveFile() {
if (QueueRealization.getIntegers().isEmpty()){
label.setText("Нечего записывать");
}else {
FileChooser saveFile = new FileChooser();
//Создаем фильтр чтобы очередь сохранялась в TXT формате
FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
//Добавляем фильтр
saveFile.getExtensionFilters().add(filter);
file = saveFile.showSaveDialog(new MainApp().getPrimaryStage()); //Открываем диалоговое окно для сохранения файла
//Создаем файл
try {
OutputStream stream = new FileOutputStream(file);
OutputStreamWriter sReader = new OutputStreamWriter(stream);
BufferedWriter writer = new BufferedWriter(sReader);
for (int entry : QueueRealization.getIntegers() //Записываем элементы очереди в переменную entry и добавляем в файл
) {
writer.append(String.valueOf(entry)); //Тут непосредственно добавляем
writer.newLine();//Переходим на новую строку
}
writer.flush();//Закрываем поток
} catch (IOException e) {
}
}
}
/**
* Метод для открытия ХМL файла в которой находится очередь
*/
@FXML
private void readXML() {
FileChooser openXML = new FileChooser();
//Создаем фильт форматов, чтобы открывались только XML файлы
FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("XML files (*.xml)", "*.xml");
//Добавляем фильтр
openXML.getExtensionFilters().add(filter);
File XmlFile = openXML.showOpenDialog(new MainApp().getPrimaryStage());//Открываем диалоговое окно для открытия файла
//Считываем XML файл и добавляем содержимое в очередь
try {
DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
Document document = dBuilder.parse(XmlFile);
document.getDocumentElement().normalize();
NodeList nList = document.getElementsByTagName("element"); //Считываем то, что находится в этом теге
for (int i = 0; i < nList.getLength(); i++) {
//Начиная с 0-го элемента записывем всё в очередь
String childList = nList.item(i).getTextContent();
QueueRealization.getIntegers().add(Integer.parseInt(childList));
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Метод для сохранения элементов очереди в ХМL файле
*/
@FXML
private void handleSaveXML() {
FileChooser saveXML = new FileChooser();
//Создаем фильтр форматов, чтобы файл сохранился в XML
FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("XML files (*.xml)", "*.xml");
//Добавляем фильтр
saveXML.getExtensionFilters().add(filter);
//Используем метод showSaveDialog чтобы вызвать окно сохранения файла
file = saveXML.showSaveDialog(new MainApp().getPrimaryStage());
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument(); //Создаем новый документ
Element RootElement = doc.createElement("Queue"); //Создаем корневой элемент в ХМL файле
for (int entry : QueueRealization.getIntegers()
) { //Считываем всю очередь и записываем в entry
Element NameElementTitle = doc.createElement("element"); //Создаем элемент очереди, куда отдельно заносим каждый элемент
//Переводим entry в строковый формат и записываем в перменную NameElementTitle
NameElementTitle.appendChild(doc.createTextNode(String.valueOf(entry)));
//Заносим в корневой элемент значения переменной NameElementTitle
RootElement.appendChild(NameElementTitle);
}
doc.appendChild(RootElement);
Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.METHOD, "xml");
t.setOutputProperty(OutputKeys.INDENT, "yes");
t.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(file)));
} catch (TransformerConfigurationException e) {
} catch (TransformerException e) {
} catch (FileNotFoundException e) {
} catch (ParserConfigurationException e) {
}
}
@FXML
private void handleHelp() {
Stage primaryStage = new Stage();
Pane root = new Pane();
TextArea textArea = new TextArea();
textArea.setEditable(false);
textArea.setText("Основные функциональные возможности:\n" +
"- Кнопка 'Добавить' как ни странно, добавляет новые элементы в очередь.\n" +
"- Кнопка 'Удалить' удаляет элемент, который находится в самом начале.\n" +
"- Кнопка 'Вывести' выводит элементы добавленные из TXT файла или XML файла.\n" +
"- Кнопка 'Новая очередь' очищает всю очередь.\n" +
"- Чтобы добавить новый элемент, нужно вписать этот элемент в текстовую строку и нажать кнопку добавить.\n" +
"\n" +
"Меню:\n" +
"- 'Открыть файл' открывает файл с заранее записанными элементами и добавляет их в очередь.\n" +
"- 'Открыть XML' открывает XML файл с заранее записанными элементами и добавляет их в очередь.\n" +
"- 'Сохранить файл' сохраняет очередь элементов, которые мы записали с помощью текстовой строки в TXT файл.\n" +
"- 'Сохранить XML' сохраняет очередь элементов, которые мы записали с помощью текстовой строки в XML файл.\n"
);
textArea.setWrapText(true);
textArea.setPrefSize(400, 400);
root.getChildren().add(textArea);
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* Метод для закрытия приложения через кнопку
*/
@FXML
private void setClose() {
System.exit(0);
}
/**
* Метод для вывода информации о программе через Alert
*/
@FXML
private void setAbout() {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Queue");
alert.setHeaderText("О программе");
alert.setContentText("Автор: Махмудов Физули\n" +
"ver.1.0");
alert.showAndWait();
}
}
Код класса MainApp.
package mainClass;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import java.io.IOException;
public class MainApp extends Application {
private Stage primaryStage;
private BorderPane rootLayout;
public Stage getPrimaryStage() {
return primaryStage;
}
public BorderPane getRootLayout() {
return rootLayout;
}
@Override
public void start(Stage primaryStage) throws Exception {
this.primaryStage = primaryStage;
//Устанавливаем иконку приложения
primaryStage.getIcons().add(new Image("file:resources/image/icon.png"));
//Вызываем метод для отображения меню
initRoot_Menu();
//Вызываем метод для отображения основного окна
initRootLayout();
//Устанавливаем название программы
primaryStage.setTitle("Queue");
}
public void initRoot_Menu() {
try {
FXMLLoader loader = new FXMLLoader();
//Указываем путь до FXML файла
loader.setLocation(MainApp.class.getClassLoader().getResource("view/Root_menu.fxml"));
//Загружаем в основной фрейм FXML файл
rootLayout = loader.load();
//Создаем новую сцену в которую добавляем корневой фрейм
Scene scene = new Scene(rootLayout);
//Устанавливаем сцену
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
public void initRootLayout() {
try {
FXMLLoader loader = new FXMLLoader();
// //Указываем путь до FXML файла
loader.setLocation(MainApp.class.getClassLoader().getResource("view/Root_Layout.fxml"));
//Загружаем FXML файл в фрейм
AnchorPane pane = loader.load();
//Устанавливаем этот фрейм по центру корневого окна
rootLayout.setCenter(pane);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Размещено на Allbest.ru
...Подобные документы
Разработка класса "очередь с приоритетами" на языке С++ с использованием объектно-ориентированного проектирования. Построение алгоритмов обработки очереди, методов вставки, удаления, вывода на экран элементов. Анализ вариантов реализации очередей.
курсовая работа [398,6 K], добавлен 28.05.2016Порядок проектирования программы, демонстрирующей принцип заполнения очереди и стека и принцип удаления элементов из очереди и стека. Определение класса и всех необходимых функций. Программа на языке С, описание возможностей, используемых для алгоритма.
курсовая работа [254,3 K], добавлен 20.05.2013Общее понятие и специфика применения очереди в программировании. Способы реализации очереди, их сущностная характеристика. Основные проблемы в использовании списков. Представление очереди в виде массива и двух целочисленных переменных start и end.
презентация [895,9 K], добавлен 14.10.2013Понимание принципа работы очереди. Возможности обращения к первому и последнему элементов очереди. Создание очереди с помощью массива. Рассмотрение примеров использования очереди с приоритетом в программе. Формирование односвязного и двусвязного списков.
контрольная работа [345,6 K], добавлен 26.11.2020- Обзор Windows Vista. Разработка консольного приложения, реализующего кольцевую очередь(20 элементов)
Обзор и комплексный анализ операционной системы Windows Vista, оценка ее преимуществ и недостатков. Разработка программы, которая реализует алгоритм очереди на 20 элементов. Построение блок-схемы и листинг алгоритма, контрольный пример его работы.
курсовая работа [4,2 M], добавлен 20.11.2013 Очередь в циклическом массиве. Извлечение элемента из очереди. Анализ сложности алгоритма. Класс входных данных, для которых применим алгоритм или структура. Выбор средств разработки. Определение отображаемых элементов, проектирование интерфейса.
курсовая работа [299,9 K], добавлен 07.06.2014Основные понятия объектно-ориентированного программирования, особенности описания функций и классов. Разработка программы для работы с универсальной очередью установленного типа, добавления и удаления ее элементов и вывода содержимого очереди на экран.
курсовая работа [187,2 K], добавлен 27.08.2012Разработка алгоритмов на динамических структурах данных. Описание структуры данных "стек". Процедуры добавления и удаления элемента, очистки памяти. Код распечатки содержимого всего стека. Инструкция пользователя, код программы, контрольный пример.
курсовая работа [22,9 K], добавлен 19.10.2010Разработка приложения "Ведомость начисления заработной платы" в среде программирования C++Builder. Алгоритм и сценарий работы программы. Проектирование интерфейса пользователя. Написание программных модулей и результаты тестирования данной программы.
курсовая работа [597,4 K], добавлен 31.01.2016Визуальное проектирование и событийное программирование. Повышение производительности программиста при использовании RAD-систем. Составление алгоритмов, разработка приложения для решения прикладных задач на примере консольных приложений C++ Builder 6.
курсовая работа [258,7 K], добавлен 30.10.2013Разработка программы для сбора и анализа информации об автобусах на парковке. Назначение и область применения. Алгоритм в словесной форме. Состав технических и программных средств. Разработка приложения в среде визуального программирования C++Builder 6.
курсовая работа [1,5 M], добавлен 06.09.2014Описание приложения в виде пользовательского сценария. Проектирование обмена сообщениями между модулями. Разработка общей структуры приложения. Обзор структуры файлов. Разработка получения данных со страницы. Характеристика результата работы программы.
дипломная работа [1,5 M], добавлен 22.03.2018Создание приложения Windows Forms в среде Microsoft Visual Studio 2008. Разработка программы "Курсовой" для организации работы по учёту курсовых работ в учебных заведениях с возможностью добавления, удаления, редактирования и поиска информации.
курсовая работа [2,2 M], добавлен 28.06.2011Описание использованных структур данных и разработка программы, обеспечивающей сжатие данных по алгоритму LZ77 с пошаговой визуализацией. Описание процедур, функций, структуры приложения и интерфейса пользователя. Тест и анализ работы алгоритма LZ77.
курсовая работа [537,9 K], добавлен 28.06.2011Краткое описание языка программирования С++. Алгоритм линейного выбора элемента, методов минимального (максимального) элемента и челночной сортировки. Анализ и разработка приложения, организующего сортировку массива данных пятью методами сортировки.
реферат [614,8 K], добавлен 12.04.2014Характеристика программных продуктов: MySQL, MSSQL, MSAccess. Разработка базы данных в среде C++Builder. Описание таблиц и установление связей между ними. Реализация функций просмотра, добавления, редактирования БД с применением языка запросов SQL.
курсовая работа [393,0 K], добавлен 13.06.2015PHP – скриптовый язык, применяемый для разработки веб-приложений; поддерживается большинством хостинг-провайдеров и является лидером среди языков. Разработка веб-приложение для вывода краткой сводки новостей и возможностью добавления комментариев.
курсовая работа [736,8 K], добавлен 16.06.2019Разработка информационной базы данных "Поликлиника" с возможностью просмотра, редактирования, добавления сведений и получения результатов запросов. Создание механизмов управления данными при помощи триггеров. Проектирование пользовательского приложения.
курсовая работа [2,0 M], добавлен 21.06.2011Разработка принципов организации информационного обеспечения, структуры входных и выходных сообщений, классификаторов и кодов. Уточнение состава аппаратной платформы. Функциональное назначение проекта, руководство пользователя и описание программы.
курсовая работа [623,3 K], добавлен 18.09.2015Выполнение операций, хранения, редактирования, систематизации данных. Рассмотрение подсистем разрабатываемой системы управления базами данных продуктового магазина. Разработка алгоритма функционирования системы и приложения для работы с базой данных.
курсовая работа [399,1 K], добавлен 26.08.2019