МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
“Технологія програмування на мові Java”
Звіт
до виконання лабораторної роботи №9
на тему " Принципи побудови графічного інтерфейса"
Мета роботи – Одержати навики побудови алгоритмів лінійних обчислювальних процесів, навчитися складати алгоритми та програмувати процеси з розгалуженням, циклами, ітераційними циклами за допомогою мови Java. Одержати навички роботи із масивами.
Короткі теоретичні відомості:
Основне поняття графічного інтерфейса користувача (ГІК) — компонент (component) графічної системи. В українській мові це слово підрозуміває просто складову частину, елемент чого-небудь, але в графічному інтерфейсі це поняття більш конкретне. Воно означає окремий, повністю визначений елемент, котрий можна використовувати в графічному інтерфейсі незалежно від інших елементів. Наприклад, це поле введення, кнопка, рядок меню, смуга прокрутки, радіокнопка. Саме вікно додатку — теж є компонент. Компоненти можуть бути і невидимими, наприклад, панель, обєднуюча компоненти, також являється компонентом.
Ви не здивуєтесь, узнавши, що в AWT компонентом вважається обєкт класу Component або обєкт всякого класу, розширяючого клас Сomponent. В класі Сomponent зібрані загальні методи роботи з будь-яким компонентом графічного інтерфейса користувача. Цей клас — центр бібліотеки AWT. Ознайомтеся з цим класом. Кожний компонент перед виведенням на екран поміщаєтся в контейнер (container). Контейнер "знає", як розмістити компоненти на екрані. Розуміється, в мові Java контейнер — це обєкт класу Container або всякого його розширення. Ознайомтеся з цим класом. Прямий нащадок цього класу — клас jcomponent — вершина ієрархії багатьох класів бібліотеки Swing.
Увага! Ви постійно будете зустрічати імена компонентів двох типів, наприклад Button і jButton. Знайте, що перший компонент важкий і для його використання треба підключати бібліотеку AWT(import java.awt.*). Другий компонент легкий і для його використання треба підключати бібліотеку Swing(import java.swing.*). При створенні додатків для програміста немає значення, яку бібліотеку використовувати. А от при створенні аплетів, які запускаються браузером, використовується виключно AWT, хоча всього можна очікувати від нових версій Java.
Створивши компонент — обєкт класу Component або його розширення, належить додати його до попередньо створеного обєкту класу container або його розширення одним із методів add(). Клас Container сам являється невидимим компонентом, він розширює клас Component. Таким чином, в контейнер поряд з компонентами можна поміщати контейнери, в яких знаходяться інші компоненти, досягаючи тим самим більшої гнучкості розміщення компонентів. Основне вікно додатку, активно взаємодіюче з операційною системою, необхідно побудувати по правилаx графічної системи. Воно повинне переміщатися по екрану, змінювати розміри, реагувати на дії миші і клавіатури. У вікні повинні бути, як мінімум, наступні стандартні компоненти.
• Рядок заголовку (title bar), з лівої сторони якого необхідо розмістит кнопку контекстного меню, а з правої — кнопки звертання і розвертання вікна і кнопку закриття додатку.
• Необовязковий рядок меню (menu bar) з випадаючими пунктами меню.
• Горизонтальна і вертикальна смуги прокрутки (scrollbars).
• Вікно повинне бути обмежено рамкою (border), реагуючою на дії миші.
Вікно з цими компонентами в готовому вигляді описане в класі Frame. Щоб створити вікно, досить зробити свій клас розширенням класу Frame, як показано в лістинзі 8.1. Всього вісім рядків тексту і вікно готове.
Код програми:
Додати у вікно послідовно компоненти Button, Canvas, Checkbox, Choice, Container, Label, List, Scrollbar, TextArea, TextField, Menubar, Menu, PopupMenu, Menultem, CheckboxMenuItem, і кожного разу запускайте програму, щоб пересвідчитися який вигляд мають ці компоненти. При одночасному виведенні вони можуть накластися один на одний, так що ви деяких із них можете і не побачити. Давайте компонентам те ж саме імя, але з індексом, наприклад Button button1. Майте на увазі, що ви працюєте з контейнером і створивши компонент він автоматично в ньому не зявиться. Перечитайте уважно початок параграфу 8.2, щоб зрозуміти, яким методом компонент додається до контейнера.
Тепер ви бачите, що by default y Java компонент займає все вікно. Щоб покінчити з цим неподобством зразу ж після команди super(s); вставте setLayout(null); Тепер розтягніть ваші компоненти по формі методом setBounds() визначеним у класі Component і, таким чином, діючим для всіх компонентів. Зробіть так, щоб усі вказані вище компоненти були видимі одночасно. Відцентруйте написи на них. Учіться знаходити необхідні методи у відповідних класах.
Поміняйте колір фону вікна з білого на якийсь інший двома методами: у методі main() і зовні цього методу.
Ви вже, без сумніву, випробували програму лістинга 9.2. Візьміть її за зразок і виведіть у вікно всі фігури, перечислені в параграфі 9.1.2. Нижче кожної фігури виведіть її назву. Вибирайте для кожної фігури свій колір. Для кожної назви виберіть свій шрифт, розмір, колір і стиль. Особливу увагу зверніть на способи задання вершин полігону і ламаної. Ви повинні проілюструвати всі можливі випадки.
Розберіться з програмою 9.5 і попробуйте залити пару фігур узорами відмінними від використаних у цій програмі, в тому числі розгляньте і заливку суцільним кольором.
public class Main extends Application {
public static final int SCREEN_WIDTH = 500;
public static final int SCREEN_HEIGHT = 300;
@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("Чорний Д., ст. гр. КН - 26, Лабораторна робота №6");
primaryStage.setWidth(SCREEN_WIDTH);
primaryStage.setHeight(SCREEN_HEIGHT);
Pane root = new Pane();
Scene scene = new Scene(root);
Button button = new Button();
button.setText("Кнопка");
button.setTranslateX(0);
button.setTranslateY(240);
Canvas canvas = new Canvas(400, 400);
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill(Color.GREEN);
gc.setStroke(Color.BLUE);
gc.setLineWidth(5);
gc.fillOval(200, 30, 30, 50);
gc.strokeOval(60, 30, 30, 50);
gc.fillRoundRect(110, 30, 30, 50, 10, 10);
gc.strokeRoundRect(160, 30, 30, 50, 10, 10);
gc.setStroke(Color.RED);
gc.strokeLine(230, 30, 50, 60);
CheckBox checkBox = new CheckBox();
checkBox.setTranslateX(240);
checkBox.setTranslateY(20);
checkBox.setText("CheckBox");
ChoiceBox<String> choiceBox = new ChoiceBox<>();
choiceBox.setTranslateX(350);
choiceBox.getItems().addAll("1", "2", "3");
choiceBox.setValue("1");
Label label = new Label();
label.setText("label for CheckBox");
label.setTranslateX(290);
label.setTranslateY(45);
ListView<String> listView = new ListView<>();
listView.setTranslateY(90);
listView.setMaxHeight(70);
listView.getItems().addAll("1", "2", "3", "4");
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
ScrollBar scrollBar = new ScrollBar();
scrollBar.setTranslateY(160);
scrollBar.setTranslateX(80);
scrollBar.valueProperty().addListener(event ->{
button.setTranslateX(4 * scrollBar.getValue());
});
TextArea textArea = new TextArea();
textArea.setTranslateY(180);
textArea.setMaxHeight(50);
textArea.setMaxWidth(200);
textArea.setText("Сюди можна щось написати");
TextField textField = new TextField();
textField.setTranslateX(210);
textField.setTranslateY(160);
textField.setText("Введіть текст");
Menu menu = new Menu("Menu");
MenuItem menuItem = new MenuItem("Menu Item");
menu.getItems().add(menuItem);
MenuBar menuBar = new MenuBar();
menuBar.getMenus().add(menu);
root.setStyle("-fx-background: #5FF7E7;");
root.getChildren().addAll(button, canvas, checkBox, choiceBox, label, listView, scrollBar, textArea,
textField, menuBar);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Результат:
Програма реалізовує всі вище перечисленні компоненти та функції:
Висновок:
На даній лабораторній роботі я одержав навики розробки простого графічного інтерфейсу користувача. Також я ознайомився з принципами побудови графічного інтерфейсу користувача. Мною була реалізована программа, яка демонструє можливості багатьох компонентів.