GluonHQ
Недавно, и вполне заслуженно меня назвали по сути динозавром. Потому что я предпочитаю assembler вместо Си.
Но речь сейчас о другом.
Просто представьте, что уже много лет(лет 10 минимум) есть решение, позволяющее писать единый код практически на все платформы(linux, winodows, macos, android, ios и даже web).
Это решение зародилось давным давно, зовут его JavaFX, вроде как официальный выход - 2008 год.
Это очередной шедевр от Sun Microsystems, который до сих пор(без какого-либо развития данной библиотеки) прекрасно себя чуствует и имеет существенные достоинства по сравнению с соврменными решениями.
Для вас flutter весом? А с JavaFX сравнивали?
А еще есть компания GluonHQ, которая стала его поддерживать и развивать.
Просто подумайте - то что я говорю - является единственным решением позволяющим действительно писать один код для всех платформ. При этом организация UI просто на высшем уровне.
Почему эти наработки не в топе? А в топе флаттеры и веб фреймворки?
Создаем программу Hello World в JavaFX в IntelliJ IDEA
Пост вольный перевод статьи:
https://www.jetbrains.com/help/idea/developing-a-javafx-hell...
Для начала создаем проект JavaFX
Выбираем JavaFX и жмем Next
Даем имя проекту и жмем Finish.
информация с сайта http://ru.java.wikia.com/wiki/Контроллер
Контроллер - это класс, предназначенный для непосредственной обработки запросов от клиента и возвращения результатов.
Чаще всего, в самом контроллере не описывается логика обработки данных. Создаются дополнительные, сервисные классы, которые выполняют все основные задачи по обработке данных. Задача методов в контроллере - вызов сервисных методов в нужном порядке и возвращение результатов клиенту.
Основная задача методов контроллера - определить требуемое действие, корректно принять данные, корректно возвратить результат. При тестировании методов клиента рекомендуется проверять не фактическую обработку данных, а корректный вызов всех команд в методе - предполагая, что алгоритм работы этих методов продуман верно.
Файл sample.fxml отвечает за интерфейс пользователя.
Переименовываем Controller в файле Controller.java
1. Наводим на имя класса-контроллера (Controller), выбираем Refractor->Rename и меняем имя класса-контроллера:
Жмем enter и завершаем рефракторинг. В файле sample.fxml должно было измениться имя класса контроллера: fx:controller="sample.SampleController"
Важный момент, конструкция fx:id будет использоваться часто, она означает, что мы работаем с объектом класса Controller.
Создадим кнопку в интерфейсе пользователя, для этого в файл sample.fxml добавим следующие сточки:
<Button text="Say 'Hello World'" onAction="#sayHelloWorld"/>
<Label GridPane.rowIndex="1" fx:id="helloWorld"/>
Возможно, понадобиться руками добавить:
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
Как видите sayHelloWorld отмечен красным цветом, а helloWorld выделен.
Введем исправления:
Используя встроенные функции IDEA создадим поле helloWorld в файле SampleController.java
Жмем enter, завершаем рефракторинг.
Далее создаем функцию sayHelloWorld встроенными способами IDEA:
Жмем enter и завершаем рефракторинг.
Добавляем действие в функцию sayHelloWorld:
Результат работы программы:
Добавим стили в нашу программу.
В файл sample.fxml добавим следующий текст:
stylesheets="/sample/sample.css"
Встроенными методами IDEA создадим файл sample.css
В файл sample.css добавляем текст:
.root {
-fx-background-color: gold; //Цвет заднего фона окна
}
.label {
-fx-font-size: 20; //Высота текста Hello World
}
Результат работы программы:
Как обычно
Сижу пишу программу для диплома ну и в одном моменте начал тупить. Подсаживаюсь к научному руководителю и прошу помочь, на что он мне отвечает, что с JavaFX занимался уже давно и ничего не помнит. Я начинаю ему объяснять, что и как у меня устроено, а он все еще повторяет, что помощи от него я вряд ли дождусь. И тут, слава Богам, я сам начинаю понимать, почему не работает. Сидя рядом с научником, исправляю несколько строк кода и вуаля! - программа работает, как и должна. И тут он выдает: "Видишь как я тебе помог, прям вот ты только подошел, а я слёту сказал, как сделать" :D
Ну в общем, все как всегда)