Привіт JavaFX! Давай познайомимося
- спрощене створення ефектів, анімації та інших «гарних штучок»;
- підтримка CSS стилів, за допомогою яких зовнішній вигляд кожного компонента можна налаштовувати дуже гнучко.
Підготовка
Перший проект
Створюємо простенький проект
Тепер приступимо до складнішої частини, але й цікавішої. Створимо невелике вікно входу до будь-якої програми. Зізнаюся чесно: я його видер зі свого курсового проекту, окремо він практичної користі не несе, але на ньому я хочу показати кілька цікавих моментів. Проект реалізовано на шаблоні MVC. Посилання на архів із необхідними картинками.
Створіть пакет "view". Клікаємо ПКМ по створеному пакету, вибираємо "Новий" -> "Клас Java". Називаєте, як бажаєте; я назву його «EnterScreen». Наслідуємо його від класу «Application» та реалізуємо абстрактний метод.
Створимо у нашому класі поле (його призначення буде видно нижче).
Створіть ще один пакет під назвою pict і помістіть туди картинки. Це вже робоча частина, тільки ми ще не маємо кнопок. Але є вже два поля введення та вікно нестандартного вигляду. Створіть ще два пакети: "controller" і "model". У першому у нас будуть обробники подій, а в другому – маленька бізнес-логіка. Тепер додамо кнопку виходу (реалізуємо праву кнопку).
Наш додаток не працюватиме, оскільки ще не створено класів-обробників. Що ж, давайте їх створимо. У пакеті "controller" створіть клас EnterScreenEvents. У даному класі створимо статичні внутрішні класи, які будуть обробниками. Усі вони реалізовуватимуть інтерфейс «EventHandler». Далі слідуйте за наступним кодом:
Класи-обробники створені. Тепер реалізуємо модель. У моделі ми зробимоменеджер ресурсів, який матиме статичні методи завантаження зображень і повернення об'єктів із нею. Створіть у пакеті «model» клас «resManager» та опишіть, як показано нижче:
Тепер картинка-кнопка працює, але ще не закриває вікно. Не забудьте в поданні змінити жорстке посилання фону на метод моделі. Тепер створимо метод у вікні, що зможе його закривати. Додайте до класу такі рядки коду:
Чому я організував закриття саме так? Іншого шляху я не знайшов, тому що в інших випадках викидається виняток про нестачу привілеїв у потоку (тільки потік програми та платформи може закрити вікно або виконати іншу операцію щодо зміни стану вікна). Не забудьте додати в обробник натискання мишки метод, що закриває вікно.