Выбор библиотеки для создания графического интерфейса Java / Habr
У любого разработчика начинается такое время, когда создавать консольные приложения уже не весело, а изучить что-то новое очень хочется.
Тогда в Java есть несколько путей, для нескольких ОС. В зависимости от тех ОС которые вы используете или окружений которые в них установлены.
Небольшое предисловие:
Сам я являюсь пока еще начинающий программистом ( могу писать софт средней сложности, но использую обычно скудный набор функций)
Статья рассчитана так же на новичков. Сам я работаю под Debian с Гномом, так что будут библиотеки мультиплатформенные)
Для начала стоило бы уделить внимание библиотеке GTK+
Она доступна не только для Явы, но и многих других языков: C++,C и т.д.
Написание Desktop’ных приложений с помощью GTK следует использовать если приложение рассчитано для работы под средой GNOME.
Сама GTK+ считается одной из самых легких для освоения библиотек под Jav’у.
Основа работы с библиотекой:
Для начала нужно подключить саму библиотеку со всеми ее вытекающими:
import org.gnome.gdk.Event;
import org.gnome.gtk.Gtk;
import org.gnome.gtk.Widget;
import org.gnome.gtk.Window;
import org.gnome.gtk.WindowPosition;
Если вышла ошибка, то скорее всего у вас просто не установлена библиотека.
Если юзаете систему типа Debian или Ubuntu, то вам поможет простая команда из терминала:
apt-get install libjava-gnome-java
После этого проблем быть не должно.
public class DesktopExample extends Window {
public DesktopExample() {
setTitle(«Пример окна на GTK и Гноме»); // Название приложения
connect(new Window.DeleteEvent() {
public boolean onDeleteEvent(Widget source, Event event) {
Gtk.mainQuit();
return false;
}
});
setDefaultSize(250, 150); // Размер
setPosition(WindowPosition. CENTER); //Позиция при запуске, в данном случае центр
show();
}
public static void main(String[] args) {
Gtk.init(args);
new DesktopExample();
Gtk.main();
}
}
В конечном итоге получаем пустое окошко.
Далее можно ставить AWT или SWT, по сути это одно и тоже, только в разных обличиях.
AWT — считается оригинальной системой для разработки графических интерфейсов, ее ругают из-за того, что она
не всегда стабильно работает на разных платформах, но сейчас таких проблем вроде не наблюдается и работать с ней удобно.
Имхо, это мой выбор.
Но SWT тяжеловеснее AWT, обладает большим функционалом, в следствии чего сложней AWT.
Но ее я бы не стал использовать часто, хотя она довольно популярна и держит свои позиции.
Вот пример окна на AWT:
// Подключаем всякие фичи, хотя swing тут лишний, это я в своем приложении прикручивал
// Это просто обрезок кода
import java.awt.EventQueue;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
public class Main {
private JFrame frame;
/**
* Запуск приложения, что-то типо первоначальной настройки, создание окна и типа того.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Main window = new Main();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Вызываем саму инициализацю
*/
public Main() {
initialize();
}
/**
* Инициализация окна
*/
private void initialize() {
frame = new JFrame(«Чистое окно сгенерированное через Eclipse»); // Делаем новое окно с названием
frame. setBounds(100, 100, 450, 300);
frame.setSize(800, 800); // Размеры
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
А вот нам пример окна на SWT:
//Подключаем всякие фичи для веселой жизни
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class ExampleApp {
public static void main (String [] args) {
Display display = new Display ();
Shell shell = new Shell(display);
shell.pack(); //Подготовка ( первичная)
shell.open (); //Подготавливаем
while (!shell.isDisposed ()) { //Запускаем
if (!display.readAndDispatch ()) display.sleep (); //Спим до поры, до времени
}
display.dispose ();
}
}
Далее в очереди идет такая штука Swing.
Она в приципе тоже не сложная, мультиплатформенная. Отличается большим количеством фич и малым количеством подключаемых пополнений.
Вот пример окна со swing’ом:
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Example extends JFrame {
public Example() {
setTitle(«Пример приложения со Свингой»);
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Example ex = new Example();
ex.setVisible(true);
}
});
}
}
Это был основной список графических сред на Java. Почти все представленные здесь «штуки» мультиплатформенны
и работают на любом компьютере — Win, Linux, Mac.
Читать книгу «Графические интерфейсы пользователя Java» онлайн полностью📖 — Тимура Машнина — MyBook.
Что выбрать
Библиотека
Подписка
📖Книги
🎧Аудиокниги
👌Бесплатные книги
🔥Новинки
❤️Топ книг
🎙Топ аудиокниг
🎙Загрузи свой подкаст
📖Книги
🎧Аудиокниги
👌Бесплатные книги
🔥Новинки
❤️Топ книг
🎙Топ аудиокниг
🎙Загрузи свой подкаст
- Главная
- Книги о компьютерах
- ⭐️Тимур Машнин
- 📚«Графические интерфейсы пользователя Java» org/ListItem»>Читать
Графические интерфейсы пользователя Java
Тимур Машнин
© Тимур Машнин, 2020
ISBN 978-5-0050-2742-9
Создано в интеллектуальной издательской системе Ridero
Введение
Любое приложение, требующее взаимодействия с пользователем, должно иметь интерфейс пользователя или GUI Graphical User Interface.
От интерфейса пользователя зависит привлекательность и удобство работы с программой.
Интерфейс пользователя может быть, как низкоуровневым, в виде командной строки, так и иметь разнообразные графические компоненты – кнопки, переключатели, меню, поля ввода и другие элементы.
Технология Java предлагает набор библиотек классов и интерфейсов, на основе которых можно построить эффективный графический интерфейс пользователя, имеющий необходимый внешний вид и поведение для создания комфортной среды конечному потребителю.
Самой первой графической библиотекой платформы Java была библиотека AWT набора JDK 1.0.
Далее библиотека AWT была дополнена библиотекой Java 2D двухмерной графики и изображений.
Библиотека AWT обеспечивает для разработчика приложений возможность использования таких основных компонентов GUI-интерфейса как кнопка, флажок, список выбора, прокручивающийся список, метка, диалоговое окно, окно выбора файла, меню, панель с прокруткой, текстовая область и текстовое поле, использования функции Drag-and-Drop, возможность обработки событий UI-компонентов, компоновки компонентов в рабочей области, работы с цветом, шрифтом, графикой, рисования и печати.
Библиотека AWT считается тяжеловесной, так как она содержит нативную библиотеку java.awt.peer, через которую взаимодействует с операционной системой компьютера таким образом, что AWT-компоненты имеют своих двойников, реализованных для конкретной операционной системы, с которыми они связаны интерфейсами пакета java.awt.peer.
Поэтому отображение AWT GUI-интерфейса зависит от операционной системы, в которой приложение развернуто.
Для расширения набора GUI-компонентов библиотеки AWT, устранения ее тяжеловесности и возможности выбора внешнего вида и поведения (Look and Feel) GUI-компонентов была создана графическая библиотека Swing.
Библиотека Swing основывается на библиотеке AWT и напрямую не связана, как библиотка AWT, с операционной системой, в которой она работает.
Поэтому библиотека Swing является уже легковесной.
Кроме того, библиотека Swing дополняет библиотеку AWT такими компонентами GUI-интерфейса как панель выбора цвета, индикатор состояния, переключатель radio button, слайдер и спиннер, панель с закладками, таблицы и деревья, расширенными возможностями компоновки GUI-компонентов, таймером, возможностью отображения HTML-контента.
С помощью библиотеки Swing стало возможным создать набор отображений Look and Feel, которые разработчик может выбирать, не оглядываясь на операционную систему, и изменять внешний вид GUI-интерфейса.
Также библиотека Swing реализует архитектуру MVC (Model-View-Controller) и потоковую модель Event Dispatch Thread (EDT).
Библиотека SWT (Standard Widget Toolkit) является альтернативой библиотекам AWT/Swing, однако она не включена в официальный релиз JRE/JDK.
Библиотека SWT была создана в процессе работы над проектом Eclipse и является попыткой взять лучшее из архитектур библиотек AWT и Swing и предоставить возможность создания быстрых GUI-интерфейсов с отображением Look and Feel, как можно более полно соответствующим операционной системе, в которой они работают.
Архитектура системы SWT построена таким образом, что SWT-компоненты представляют собой лишь Java-оболочки GUI-компонентов конкретной операционной системы.
Для операционной системы, в которой отсутствует реализация какого-либо компонента, система SWT обеспечивает Java-эмуляцию.
Так в системе SWT достигается скорость работы и полное соответствие внешнему виду и поведению операционной системе.
Для создания GUI-интерфейса система SWT предоставляет такие GUI-компоненты как кнопка, включая флажок и переключатель, список, метка, меню, текстовая область, диалоговое окно, индикатор прогресса, панель с прокруткой, слайдер и спиннер, таблица и дерево, панель с вкладками, панель выбора даты, панель инструментов, встроенный Web-браузер, гиперссылка, а также обеспечивает компоновку SWT-компонентов, встраивание AWT-компонентов, отображение OpenGL-контента, печать, поддержку операций Drag and Drop, 2D-графики, технологии Win32 OLE.
Библиотека JFace дополняет библиотеку SWT и создана на основе библиотеки SWT с реализацией архитектуры MVC (Model-View-Controller), предоставляя такие MVC GUI-компоненты как таблица, дерево, список, текстовая область и диалоговое окно, обеспечивая определение пользовательских команд независимо от их представления в GUI-интерфейсе, управление шрифтами и изображениями, помощь пользователю в выборе соответствующего содержания для полей в GUI-компонентах, выполнение длительных задач.
Библиотека Java 3D была создана как высокоуровневая библиотека для создания 3D графики, включая анимацию 3D-объектов.
Библиотека Java 3D не включена в официальный релиз JRE/JDK и требует отдельной установки.
Библиотека Java 3D оперирует объектами, размещаемыми в графе сцены, который представляет собой дерево 3D-объектов и предназначен для визуализации.
Java3D-приложение может работать как настольное приложение, как апплет или как настольное приложение и апплет.
По сути, библиотека Java 3D является оберткой графических библиотек OpenGL и DirectX.
Каждая из вышеперечисленных графических библиотек имеет свои преимущества и недостатки, в числе которых надо отметить тот факт, что данные библиотеки не удовлетворяют современным требованиям работы с медиаконтентом.
Кроме того, данные библиотеки не обеспечивают возможность декларативного создания GUI-интерфейса на основе языка XML.
Библиотека JavaFX была создана как универсальная платформа, предоставляющая современные GUI-компоненты с возможностью их декларативного описания, богатый набор библиотек для работы с медиаконтентом и 2D/3D графикой, а также высокопроизводительную среду выполнения приложений.
Первоначально, с 2007 по 2010 год, версии 1.1, 1.2 и 1.3 платформы JavaFX содержали:
– Декларативный язык программирования JavaFX Script создания UI-интерфейса.
– Набор JavaFX SDK, обеспечивающий компилятор и среду выполнения.
– Плагины для сред выполнения NetBeans IDE и Eclipse.
– Плагины для Adobe Photoshop и Adobe Illustrator, позволяющие экспортировать графику в код JavaFX Script, инструменты конвертации графического формата SVG в код JavaFX Script.
Платформа JavaFX версии 2.0 выпуска 2011 года кардинально отличалась от платформы JavaFX версии 1.х.
Платформа JavaFX 2.х больше не поддерживала язык JavaFX Script, а вместо этого предлагала новый программный интерфейс JavaFX API для создания JavaFX-приложений полностью на языке Java.
Для альтернативного декларативного описания графического интерфейса пользователя платформа JavaFX 2.х предлагала новый язык FXML.
Кроме того, платформа JavaFX 2.х обеспечивала новые графический и медиа движки, улучшающие воспроизведение графического и мультимедийного контента, обеспечивала встраивание HTML-контента в приложения, новый плагин для Web-браузеров, широкий выбор GUI-компонентов с поддержкой CSS3, 2D графику, создание отчетов с диаграммами, интеграцию с библиотекой Swing.
При этом платформа JavaFX версии 2.х содержала:
– Набор JavaFX SDK, предоставляющий инструмент JavaFX Packager tool компиляции, упаковки и развертывания JavaFX-приложений, Ant-библиотеку для сборки JavaFX-приложений, библиотеки JavaFX API и документацию.
– Среду выполнения JavaFX Runtime для работы настольных JavaFX-приложений и JavaFX-апплетов.
– Поддержку платформы JavaFX 2.х для среды выполнения NetBeans IDE 7.
– Примеры JavaFX-приложений.
– Приложение JavaFX Scene Builder 1.х для визуальной компоновки GUI-компонентов в GUI-интерфейс с использованием языка FXML.
В дальнейшем платформа JavaFX была полностью интегрирована в платформу Java 8, и перестала требовать отдельной инсталляции.
Кроме того, платформа JavaFX 8 была дополнена программным интерфейсом CSS API создание стилей, интеграцией с библиотекой SWT, программным интерфейсом Printing API, 3D графикой, программным интерфейсом SubScene API.
Также платформа JavaFX 8 предлагает улучшенный инструмент JavaFX Scene Builder 2.х для визуальной компоновки GUI-компонентов в GUI-интерфейс на основе языка FXML, дополненный поддержкой новых возможностей платформы JavaFX 8, программным интерфейсом JavaFX Scene Builder Kit для встраивания инструмента в Java приложения, возможностью добавлять пользовательские GUI-компоненты и др.
В настоящее время технология JavaFX обеспечивает создание мощного графического интерфейса пользователя (Graphical User Interface (GUI)), 2D и 3D графику для крупномасштабных приложений, ориентированных на обработку данных, насыщенных медиа-приложений, поставляющих разнообразный медиа-контент пользователю, Mashup-приложений, объединяющих различные Web-ресурсы для пользователя, обеспечивает создание компонентов высококачественной графики и анимации для Web-сайтов, различного рода пользовательских программ, насыщенных графикой, анимацией и интерактивными элементами.
Библиотека AWT
Итак, самой первой графической Java-библиотекой была создана библиотека AWT (Abstract Window Toolkit).
Она была включена в первую версию JDK 1.0.
Затем библиотека AWT была дополнена библиотекой Java 2D API, расширяющей возможности работы с двухмерной графикой и изображениями.
Так как технология Java является платформо-независимой, то соответственно и графическая Java-библиотека должна быть платформо-независимой.
Сам по себе язык Java не обладает возможностями низкоуровневого взаимодействия с конкретной операционной системой, обеспечивающими передачу информации от мышки или клавиатуры приложению и вывод пикселей на экран.
Поэтому библиотека AWT была создана так, что каждый AWT-компонент имеет своего двойника-пира peer – интерфейс, обеспечивающий взаимодействие с конкретной операционной системой.
Таким образом, переносимость графической библиотеки AWT обусловлена наличием реализации пакета java.awt.peer для конкретной операционной системы.
Вследствие этого, AWT-компоненты называют тяжеловесными.
Все AWT-компоненты, кроме элементов меню, представлены подклассами класса java.awt.Component.
Для элементов меню суперклассом является класс java.awt.MenuComponent.
Архитектура AWT устроена таким образом, что компоненты размещаются в контейнерах (суперкласс java.awt.Container) с помощью менеджеров компоновки – классов, реализующих интерфейс java.awt.LayoutManager.
Для настольных приложений корневое окно графического интерфейса пользователя представляет контейнер java.awt. Window, который в свою очередь должен содержать окно java.awt.Frame с заголовком и границами или диалоговое окно java.awt. Dialog, также имеющее заголовок и границы.
AWT-компоненты добавляются в панель java.awt.Panel – контейнер, который может содержать как компоненты, так и другие панели.
Для апплетов класс java. applet. Applet, расширяющий класс java.awt.Panel, является корневым контейнером для всех графических компонентов.
Создаваемые на основе платформы Java SE апплеты представляют собой программы, написанные на языке Java и работающие в среде браузера, который загружает их и запускает виртуальную машину JVM для их выполнения.
В отличие от настольных приложений, апплеты являются управляемыми программными компонентами.
Это означает, что апплет не может быть запущен, как настольное приложение, одной только виртуальной машиной JVM.
Для его работы необходим браузер, который распознает тэги <APPLET> или <OBJECT> и <EMBED>, включающие апплет в HTML-страницу.
Главный класс апплета должен быть подклассом класса java. applet. Applet, при этом класс Applet служит интерфейсом между апплетом и браузером.
Жизненным циклом апплета управляет компонент Java Plug-in среды выполнения JRE.
Настольные приложения платформы Java SE – это независимые Java-приложения, которые выполняются виртуальной машиной JVM, при этом точкой входа в приложение является главный класс приложения, содержащий статический метод main.
Начиная с версии Java SE 7 с апреля 2013 года все Java-апплеты и приложения Web Start должны подписываться доверенным сертификатом.
Это фактически уничтожило свободную разработку и распространение апплетов, так как приобретение доверенного сертификата является платной и не дешевой услугой.
Более того, Java 9 вообще запрещает использование апплетов, которые теперь уходят в историю.
Java Web Start
Java Web Start (JWS) – это технология, основанная на протоколе Java Network Launching Protocol (JNLP), позволяет загружать и запускать приложения с сайта, с помощью браузера.
Преимущество данной технологии в том, что пользователю не нужно самому специально инсталлировать приложение на своем компьютере и беспокоиться о его обновлениях.
Вся площадка для загрузки и старта приложения находится на сервере сайта.
Настольное Java приложение можно распространять двумя способами.
Можно выкладывать для скачивания версии приложения, которые будут скачиваться пользователем, и который сам должен следить за обновлениями приложения.
Или можно использовать технологию Java Web Start.
Java Web Start – это технология развертывания приложений, которая позволяет пользователям запускать полнофункциональные приложения одним щелчком мыши из любого веб-браузера.
Web-страничка браузера должна содержать ссылку, указывающую на файл с расширением. JNLP, который включает в себя инструкции для загрузки, кэширования и запуска приложения.
Пользователи могут загружать и запускать приложения, не выполняя сложные процедуры установки.
С помощью Java Web Start пользователи запускают приложения, перейдя по ссылке на веб-странице.
Если приложение отсутствует на компьютере, Java Web Start автоматически загружает все необходимые файлы.
Затем файлы кэшируются на компьютере, чтобы приложение всегда было готово к перезагрузке в любое время, когда пользователь захочет – либо с помощью значка на рабочем столе, либо с помощью ссылки браузера.
Независимо от того, какой метод используется для запуска приложения, всегда отображается самая последняя версия приложения.
Технология, лежащая в основе Java Web Start, – это протокол Java Network Launching Protocol & API (JNLP).
Java Web Start – это эталонная реализация для спецификации JNLP.
Технология JNLP определяет, помимо прочего, файл JNLP, который является стандартным файловым форматом, описывающим запуск приложения.
С технологической точки зрения Java Web Start имеет ряд преимуществ.
Технология Java Web Start построена исключительно для запуска приложений, написанных на платформе Java, Standard Edition.
Таким образом, одно приложение может быть доступно на веб-сервере, а затем развернуто на самых разных платформах, включая Windows, Linux и macOS.
Java Web Start поддерживает несколько версий платформы Java Standard Edition.
Таким образом, приложение может запрашивать определенную версию требуемой платформы, например, Java SE 9.
Несколько приложений могут запускаться одновременно с разными версиями платформ, не вызывая конфликтов.
Java Web Start позволяет запускать приложения независимо от веб-браузера.
Это можно использовать для автономной работы приложения, когда запуск приложения через браузер неудобен или невозможен.
Приложение также можно запускать с помощью ярлыков на рабочем столе, что делает запуск развернутого в Интернете приложения похожим на запуск нативного приложения.
Java Web Start использует функции безопасности платформы Java.
Приложения запускаются в защитной среде или песочнице с ограниченным доступом к локальным дисковым и сетевым ресурсам.
Пользователи также должны давать согласие на запуск приложения при первом запуске.
Приложения, запущенные с помощью Java Web Start, локально кэшируются.
Таким образом, уже загруженное приложение запускается аналогично традиционно установленному приложению.
Java Web Start входит в состав платформы Java Platform, Standard Edition (JDK) и Java Runtime Environment (JRE) и поддерживает функции безопасности платформы Java.
Это означает, что приложение, запускаемое с помощью Java Web Start, должно быть подписано доверенным сертификатом.
Что значительно сужает применение Java Web Start, так как получение доверенного сертификата является платным.
Таким образом, с помощью Java Web Start приложение можно запустить тремя способами:
Из веб-браузера, нажав ссылку.
Из значка на рабочем столе или в меню «Пуск».
Из Java Cache Viewer.
Независимо от того, какой путь используется, Java Web Start будет подключаться к веб-серверу каждый раз при запуске приложения, чтобы проверить, доступна ли обновленная версия приложения.
При запуске из веб-браузера используется HTML-ссылка, которая вместо того, чтобы указывать на другую веб-страницу, ссылается на специальный файл конфигурации, называемый JNLP-файлом.
Веб-браузер проверяет расширение файла или тип MIME файла и видит, что он принадлежит Java Web Start.
Поэтому браузер запускает Java Web Start с загруженным файлом JNLP в качестве аргумента.
Премиум
(6 оценок)
Тимур Машнин
На этой странице вы можете прочитать онлайн книгу «Графические интерфейсы пользователя Java», автора Тимура Машнина. Данная книга имеет возрастное ограничение 12+, относится к жанру «Книги о компьютерах».. Книга «Графические интерфейсы пользователя Java» была издана в 2019 году. Приятного чтения!
О проекте
Что такое MyBook
Правовая информация
Правообладателям
Документация
Помощь
О подписке
Купить подписку
Бесплатные книги
Подарить подписку
Как оплатить
Ввести подарочный код
Библиотека для компаний
Настройки
Другие проекты
Издать свою книгу
MyBook: Истории
Введение в библиотеки GUI на Java
Введение в GUIГрафические библиотеки
- В оригинальной версии Java графические компоненты находились в AWT
библиотека (абстрактный набор инструментов Windows)
- Подходит для разработки простых приложений с графическим интерфейсом
- Для разных платформ компоненты AWT сопоставлены с конкретными платформами. компоненты
- Склонен к ошибкам платформы
- Первичный пакет: Java.awt. См. другие API-интерфейсы пакетов awt на сайте java.sun. сайт
- Когда была выпущена Java 2, библиотека, известная как Swing
компоненты были представлены с идеей замены старого AWT
компоненты пользовательского интерфейса (такие как Button, TextField,
TextArea и др.).
- меньше зависит от целевой платформы
- более надежная и гибкая библиотека
- Первичный пакет: javax.swing. См. другие API-интерфейсы пакетов Swing на сайте java.sun. сайт
- После выпуска Java 2 компоненты Swing рекомендуются для создание графических пользовательских интерфейсов для более поздних браузеров. Иметь ввиду что более ранние версии браузеров могут не поддерживать их. За теперь компоненты AWT должны по-прежнему работать в апплетах в большинстве браузеры, а также.
Компоненты и контейнеры
Компоненты
- Графический компонент представляет собой объект, имеющий графическое представление, которое может отображаться на экране и которое может взаимодействовать с пользователь
- Некоторые примеры компонентов:
- кнопка
- флажок
- текстовое поле
- поле со списком
- Компонент класса: Класс, который служит основой для всех классы графического пользовательского интерфейса без меню
- класс JComponent: этот класс является основой для всех Компоненты Swing (за исключением контейнеров верхнего уровня )
Контейнеры
- Контейнер — это компонент графического интерфейса, который может содержать другие
составные части
- Обратите внимание, что контейнер является самим компонентом
- Но, более конкретно, его можно использовать для хранения других компонентов в конкретная область
- Примеры контейнеров GUI:
- окно
- панель
- панель с вкладками
- панель прокрутки
- class Container: эта библиотека классов формирует основу для контейнеры
- Контейнер верхнего уровня — это специальный контейнер, предназначенный
быть самым внешним контейнером для некоторого контекста графического интерфейса. В Яве есть
три контейнера верхнего уровня:
- Фрейм — внешний контейнер для окна приложения
- Applet — внешний контейнер для Java-апплета
- Диалог — внешний контейнер для диалогового окна
- В библиотеках Swing эти три контейнера верхнего уровня находятся в этих
три класса:
- JFrame
- Японский апплет
- JDialog
- Один очень полезный контейнер общего назначения:
JPanel
- Панель — невидимый контейнер, который можно использовать для хранения составные части. Он может быть вложен в другие контейнеры, а также может быть используется в качестве легкого холста для рисования
События
- Событие : Сигнал о том, что в программе что-то произошло. Примеры: нажатия кнопок, движения мыши, выбор меню
- Программы с графическим интерфейсом обычно управляются событиями, а не конкретными процессуальный приказ
- События обрабатываются с помощью объектов событий. Они вызваны действия над исходными объектами (компонентами или объектами, на которых сгенерировано), и они должны реализовать соответствующий прослушиватель событий интерфейсы. Слушатель прослушивает событие и вызывает событие обработчик при возникновении события
- java.util.EventObject: базовый класс для классов событий в Java .
- ActionEvent — нажатие кнопки, нажатие возврата в текстовом поле
- ItemEvent — установка флажка, выбор элемента
- WindowEvent — Закрытие окна, открытие окна
- ContainerEvent — компонент добавлен в контейнер
- ComponentEvent — изменение размера компонента, скрытие компонента
- TextEvent — изменение текстового значения
- MouseEvent — щелчок мышью, перетаскивание мыши
- KeyEvent — нажатие клавиши на клавиатуре
графических интерфейсов Java. Что выбрать? Swing, SWT, AWT, SwingX, JGoodies, JavaFX, Apache Pivot?
В нынешнем виде этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подкреплены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, аргументы, опросы или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, снова открыть, посетите справочный центр для получения инструкций.
Закрыта 9 лет назад.
Заблокировано . Этот вопрос и ответы на него заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия.
Существует довольно много графических фреймворков для Java, но какой из них сегодня считается предпочтительным?
Ниже приведено мое понимание различных фреймворков, поправьте меня, если я ошибаюсь. Это очень слабо определенный набор вопросов, но я все же считаю его полезным для всех, кто думает о создании приложений с богатым графическим интерфейсом.
AWT
Это основа свинга, он хорошо работает, но ему не хватает продвинутых компонентов. Если вы собираетесь создавать многофункциональные приложения, AWT, вероятно, не подходит. Однако для небольших графических приложений, которым не требуются богатые пользовательские интерфейсы. Это может идеально подойти, поскольку это проверенная и проверенная структура.
Swing
На основе AWT, как указано выше. В зачаточном состоянии он считался медленным и глючным, что заставило IBM создать SWT для Eclipse. Однако с появлением Java 5 (или 6?) Swing стал предпочтительным фреймворком для создания новых приложений. Swing имеет много богатых компонентов, но в некоторых областях все еще не хватает. Одним из примеров является отсутствие полнофункционального компонента TreeTable, который может выполнять сортировку и фильтрацию/поиск.
SWT
Созданный IBM для Eclipse, они, похоже, думали, что в то время Swing не подходил для Eclipse. Сам по себе он довольно низкоуровневый и использует собственные виджеты платформы через JNI. Это вообще не связано с Swing и AWT. Однако их API несколько неуклюж и не интуитивно понятен. У них есть некоторые расширенные компоненты, такие как TreeTable. (но я не думаю, что они поддерживают сортировку и фильтрацию из коробки). SWT использует некоторые собственные привязки (через JNI?), и в Интернете разглагольствует о том, что эту структуру не следует использовать в современных проектах. (почему бы и нет?)
SwingX
Основанный на Swing, его задача состоит в создании богатых компонентов для Swing. Все еще в разработке. (хотя и не очень активно.) Иметь очень хороший набор компонентов, например, TreeTable. Но насколько я знаю, TreeTable не поддерживает фильтрацию и сортировку. Однако он поддерживает поиск с подсветкой.
Обратите внимание, что SwingX — это компоненты (AFAIU), которые являются расширениями или композиции существующих компонентов Swing
JGoodies
Фреймворк, о котором я ничего не знаю. .. Каковы его сильные и слабые стороны? Что отличает Jgoodies от остальных?
JGoodies OTOH посвящен PLAF и макетам.
JavaFX
Последний флагман Java/Oracle. обещает стать фактическим стандартом в разработке многофункциональных настольных или веб-приложений.
Apache Pivot
Он отображает пользовательский интерфейс с использованием Java2D, тем самым сводя к минимуму влияние (IMO, раздутое) наследия Swing и AWT. (@Augustus Thoo)
Основное внимание, по-видимому, уделяется RIA (многофункциональным интернет-приложениям), но, похоже, его также можно применять к настольным приложениям. И как личный комментарий, Выглядит очень интересно! Мне особенно нравится, что это проект Apache.
https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html
Qt Jambi
Java-оболочка для родной библиотеки qt, написанная на c/c++. Очень мощный, широко используемый и принятый.