Как сделать кнопку в javafx
Выбирая между Eclipse и Intellij IDEA выбрала второй вариант. Почему второй? Просто в Eclipse уже тыкалась, а об Intellij IDEA узнала из проекта JavaRush. Итак, перед началом работы установила Intellij IDEA 13 и jdk 1.7 JDK (Java Development Kit) - это инструмент для работы с языком Java,в котором есть компилятор, интерпретатор, отладчик и другими инструменты, включает в себя обширнейшую библиотеку классов Java.
Забыла указать самое главное - Цель работы.
Цель работы при изучении основ Java - это создать простое оконное приложение(Frame), в котором будет находиться кнопка(Button) и выполнять какое-то действие.
Перед началом работы познакомилась с существующими компонентами в Java, такими как Label, Button, Panel, TextArea.
Посмотрела как их создают, если сравнить с as3, то принцип такой же, поэтому заострять внимание не стала.
Остался один вопрос. Почему я выбрала пакет awt, а не swing? Да очень просто, когда я читала про java, то там писали про awt.
А про swing я узнала уже потом, когда писала программу, но решила, так как у них принцип работы одинаковый, то не стоит заморачиваться.
Ну да, в swing есть уже свои навороты, но о них можно будет узнать потом, если потребуется, а сейчас достаточно основ.
Запускаем среду разработки и видим следующее
Рисунок 1- Выбор действий
Сначала можно войти в Configure - Settings - и произвести какие-нибудь настройки.
Но на мой взгляд там всё настроено и ничего менять не нужно, поэтому для новичка можно изменить только тему среды.
Для этого внизу смотрим на надпись IDE Settings и первое у меня это Appearance.
Выбираю ее и справа в окне есть выпадающий список Theme.
Меняю, на какую нужно и нажимаю внизу на кнопку OK. Среда перезагрузится и покажет выбранную мной тему.
Возвращаемся к нашим баранам, а точнее к рисунку 1. И как уже показано на картинке, выбираем пункт Создать новый проект. Открывается следующее окно
Рисунок 2 - New project
Здесь необходимо заполнить поля. Вписываю имя проекта, указываю место, куда сохранить проект и указываю, куда я установила jdk.
Своему проекту дала имя MyFrameButton. Всё заполнила и нажала OK.
Дальше у нас создается и открывается проект. Но для начала работы этого не достаточно. Теперь требуется создать свой первый класс.
Рисунок 3 - Внешний вид проекта
На рисунке можно увидеть класс FirstProgram. Этот класс был создан мной для работы. Как я это сделала?
Да очень просто. Выбрала папочку src, это видно на рисунке. Открыла контекстное меню и выполнила следующее действие: New - Java Class.
Программа потребовала с меня имя класса, вот я и написала FirstProgram, затем нажала OK и получила поле для работы.
Ну вот, пришло время и покодить.
Кодирование
В созданный класс первым делом в самом вверху написала
Решила в конце указать (* - всё), так как еще не знаю, что мне понадобится от туда.
При кодировании рядом с моей строчкой появились следующие. Я их не писала, они сами вписались.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
Так же отмечу, что при создании класса автоматически появилась следующая строчка
public class FirstProgram<>
Я ее немножко дополнила до такой строки
public class FirstProgram extends Frame
public - это модификатор доступности. Так как это имя класса с которым я работаю, то он должен быть у меня доступным (общественным).
После имени класса добавила слово
extends - что означает унаследовать. Мой класс будет наследником класса Frame. На основе этого класса, я буду создавать оконное приложение.
Итак, в буквальном смысле, это звучит так: Общественный класс FirstProgram является потомком класса Frame, что значит, имеет доступ к его свойствам и методам.
При создании программы обратила внимание, что конструктор класса не создается автоматически, отличии от AS3.
Поэтому прописала конструктор класса.
Отмечу, что это конструктор класса, поэтому у него такое же имя как и у класса. Ну и модификатор такой же.
После конструктора добавила статическую точку входа программы.
public static void main(String args[])<>
Как я прочитала, эта точка для запуска программы. А статическая, потому что она одна должна быть во всём проекте.
Модификатор public для того, что бы она была доступна всем в проекте.
Настройка окна приложения
В as3 первым делом вызывали предка, а потом проводили все остальные действия. В Java оказывается тот же принцип и вызывается так же.
Итак, в конструкторе первым делом запишем такие строчки
// вызываем предка, в данном случае Frame и указываем какое имя заголовка будет
setSize(200, 200);
// что бы окно не появлялось маленьким, устанавливаем нужный нам размер.
рисунок 4 - Внешний вид окна без параметров
Пора уже определиться с тем, что у нас будет на форме.
Внешний вид
В нижней части экрана располагается кнопка Button, при нажатии на которую будет происходить какое-то действие.
Самое простое действие - это инкремент, т.е увеличение числа на 1.
private int countClick=0;
// переменная счетчик, устанавливаю начальное значение 0
private Button myButton;
// переменная для Кнопки
private Label myText;
// переменная для Текста
В конструкторе класса создаем объекты
myButton = new Button("Hello");
// создаем Кнопку с надписью на ней Hello
myText = new Label("Hello World "+countClick);
// создаем текстовое поле с надписью Hello World и добавляем к нему отображение счетчика
Также нужно учесть расположение объектов на форме. Для этого добавляем следующий код:
// Label будет расположен вверху, что значит на Северной части формы
add(myButton, BorderLayout.SOUTH);
// Button будет расположен внизу, значит на Южной части формы
Но что же будет, если я не напишу расположение. Прикинем на примере myText. Закомментируем его, но оставим для myButton.
В результате я увижу такую форму.
рисунок 5 - Без Label
Итак, мы видим кнопку с надписью, но текстового поля с надписью на форме нет. Вот так будет выглядеть приложение, если забыть про расположение.
Событие Кнопки
Подходим постепенно к завершению. Как и AS3 оказывается Java тоже использует Слушателя для создания события.
Однако есть отличия. В AS3 я использовала addEventListener, а тут addActionListener.
Итак, события нужно для кнопки, поэтому вешать слушателя нужно кнопки.
Для этого я пишу имя объекта кнопки, ставлю точку и выбираю из выпадающего списка событие слушателя.
Таким образом у меня получается вот так.
Ну вот, в AS3 я прописывала свое название события и константу события, а в Java нужно написать создание нового события, т.е new ActionListener.
Выглядит это так
Как только я это написала, то увидела, что была автоматически создана следующая строка.
Отмечу еще раз, я ее не писала, она САМА автоматически появилась после моей строчки.
@Override
public void actionPerformed(ActionEvent e)
Итак, я вижу, что мне автоматически подготовили место для работы. Поэтому внутри процедуры я впишу следующий свой код.
// увеличиваю переменную на 1
myText.setText("Hello World "+countClick);
// обновляю текст в Label. Решила оставить текст без изменения, но могла бы вместо Hello World написать что-то другое.Так что обновляется только счетчик.
>
// закрываю new ActionListener
);
// закрываю скобку события Слушателя
Ну вот и всё. Код в классе FirstProgram закончился. Осталось прописать код для запуска созданного класса.
Кодируем в Main
FirstProgram myProgram = new FirstProgram();
// создаем объект myProgram своего созданного класса FirstProgram
myProgram.setVisible(true);
// устанавливаем видимость объекта.
В принципе этого достаточно. Однако, я обратила внимание, при работе с приложением я могу окно свернуть, развернуть, но не могу его закрыть.
Оказывается этот функционал подключается отдельно. Так как я всё же хочу закрывать свое окно, то решила подключить и эту функцию .
Закрыть окно
Для работы с меню окна используется слушатель window, а за закрытие отвечает адаптер.
Прочитала, что событие WindowClosing отвечает за закрытие окна на крестик. А чтобы окно закрывалось используют команду dispose().
Соединив всю информацию вместе, получила следующий код:
// так как действие должно быть с окном, то вешаем событие на созданный объект.
Принцип работы тот же, что и был, выбираю, прописываю new WindowAdapter() и появляется внизу текст события
@Override
public void windowClosing(WindowEvent e) super.windowClosing(e);
// этот текст был создан автоматически. Я вижу, что вызывается родитель с методом Закрыть окно,
в качестве аргумента отправляют Событие(event), с которым нужно дальше работать для реализации метода.
Следуя созданной для меня записи, я написала следующий код
e.getWindow().dispose();
// использую полученное событие, указываю, что мне нужно окно этого события, и указываю, что я хочу с ним сделать, а точнее уничтожить или освободить.
>
>
);
Официальное руководство по JavaFX (пять) по созданию формы в JavaFX
Создание формы является обычным делом при разработке приложений. В этом руководстве вы познакомитесь с основами компоновки экрана, с тем, как добавить элементы управления на панель макета и как создать входные события.
В этом уроке вы будете строить с использованием JavaFXРисунок 4-1Форма входа показана.
Рисунок 4-1 Форма входа
1. Создать проект
Ваша первая задача - создать проект JavaFX в IDE NetBeans и назвать его Login:
От "Файл "Меню выберитеНовый Проект "。
вJavaFXВыберите категорию приложенияJavaFX Application, щелчокСледующий шаг。
Назовите проектLoginИ нажмитеFinish。
При создании проекта JavaFX IDE NetBeans предоставляет приложение Hello World в качестве отправной точки, если вы будете следоватьHello WorldУчебник, вы уже видели приложение.
Удалить start() Метод, сгенерированный в среде IDE NetBeans, и замените егоВ примере 4-1Код.
Пример 4-1. Этап применения
Советы:После добавления примера кода в проект NetBeans нажмите клавиши Ctrl (или Cmd) + Shift + I, чтобы импортировать необходимые пакеты. Если вы можете выбрать оператор импорта, выберите оператор, который начинается с вводного оператора javafx 。
Создать макет GridPane
Для формы входа используйте GridPane Компоновка, поскольку она позволяет создавать гибкие сетки строк и столбцов для размещения элементов управления в нем. Вы можете поместить элемент управления в любую ячейку сетки и при необходимости создать ячейки диапазона управления.
создать GridPane Код макета находится вПример 4-2, Добавьте код перед строкой primaryStage.show();
Пример 4-2. GridPane с пробелами и атрибутами заполнения
Пример 4-2Создано GridPane Объект и назначить его переменной с именем grid , Свойство выравнивания меняет положение сетки по умолчанию с верхнего левого угла сцены на центр. Свойство gap управляет расстоянием между строками и столбцами, а свойство padding управляет пространством вокруг краев панели сетки. Иллюстрации расположены в порядке сверху, справа, снизу и слева. В этом примере 25 На каждой стороне есть отступы.
Создание сцены с использованием панели сетки в качестве корневого узла является обычной практикой при использовании контейнеров макета. Поэтому при изменении размера окна настройте размер узлов в области сетки в соответствии с ограничениями макета. В этом примере панель сетки остается в центре, когда вы увеличиваете или уменьшаете окно. Свойство fill гарантирует, что вокруг панели сетки будет заполнение, уменьшающее размер окна.
Этот код устанавливает ширину и высоту сцены равными 300 на 275. Если размер сцены не задан, по умолчанию используется минимальный размер сцены, необходимый для отображения ее содержимого.
Добавить текст, метки и текстовые поля
Пример 4-3 Контроль
Первая строка создает Text Не редактируемый объект, установите текст в Welcome И назначьте его переменной с именем scenetitle , Используйте следующую строку setFont() Настройки метода scenetitle Переменный семейство шрифтов, вес и размер. Когда стили привязаны к переменным, целесообразно использовать встроенные стили, но лучше использовать таблицы стилей для лучшего оформления элементов пользовательского интерфейса. В следующем урокеНеобычные формы с использованием JavaFX CSS, Вы замените встроенный стиль таблицей стилей.
Создайте один в следующей строке Label Объект, содержащий первый User Name 0 столбец, 1-я строка текста и Text Field Редактируемые объекты. Текстовое поле добавляется на панель сетки в столбце 1, строка 1. Поля и метки паролей будут созданы и добавлены в панель сетки аналогичным образом.
При использовании панели сетки вы можете отображать линии сетки, что полезно для отладки. В этом случае вы можете grid.setGridLinesVisible(true) Добавьте после строки, которая добавляет поле пароля. Затем, когда вы запускаете приложение, вы видите строки столбцов сетки и строк и свойства промежутка,Рисунок 4-2Как показано
Рисунок 4-2 Форма входа с линиями сетки
4. Добавить кнопки и текст
Сначала создайте кнопку и поместите ее в нижний правый угол, который является общим местом для кнопок, которые выполняют действия, влияющие на всю форму. Код вПример 4-4, Добавьте этот код перед кодом сцены.
Пример 4-4 Кнопка
Первая строка создает btn Ярлык с именем кнопки Sign in, И вторая строка создает один HBox В пикселях hbBtn Интервал именованной панели макета 10 , что HBox Панель устанавливает выравнивание кнопок, которое отличается от выравнивания, примененного к другим элементам управления на панели сетки. что alignment Значение атрибута Pos.BOTTOM_RIGHT Узел размещает узел вертикально внизу пространства и горизонтально по правому краю пространства. Кнопка была добавлена как HBox Дети панели, HBox Панель будет добавлена в сетку в столбце 1, строке 4.
Пример 4-5 текст
Рисунок 4-3 Форма входа с кнопками
5. Добавить код для обработки событий
Пример 4-6 Событие кнопки
что setOnAction() Метод используется для регистрации обработчика событий, который будет actiontarget Настройки объекта Sign in button pressed Когда кнопка нажата для пользователя. actiontarget Цвет объекта установлен на огнеупорный кирпич красного цвета.
6. Запустите приложение
Рисунок 4-4 Окончательная форма входа
Куда идти отсюда
На этом учебное пособие по основным формам завершено, но вы можете продолжить чтение следующих руководств по разработке приложений JavaFX.
Необычные формы с использованием JavaFX CSSСодержит советы по добавлению фонового изображения и радикальному изменению стилей текста, меток и кнопок в форме входа.
Создание пользовательского интерфейса с использованием FXMLПоказывает другой способ создания пользовательского интерфейса для входа. FXML - это язык на основе XML, обеспечивающий структуру для создания пользовательского интерфейса, отдельную от логики приложения кода.
Использование макетов в JavaFXОбъясняет встроенные панели макета JavaFX, а также советы и рекомендации по их использованию.
Интеллектуальная рекомендация
Синтаксис запроса Hive 05
1. Select выберите синтаксис запроса Основная операция выбора Грамматическая структура SELECT [ALL | DISTINCT] select_expr, select_expr, … FROM table_reference [WHERE where_condition] [GROUP.
Первоначальная подготовка отчета об эксперименте по проникновению
I. Обзор 1.1 Цель испытания Благодаря реализации целевого тестирования на проникновение, доступ к разрешениям целевого сервера 1.2 Диапазон испытаний системное имя Тестовый сайт Тестовый домен wwwxxxx.
ReactNative mobile и разрешение конфликтов жестов кликов и своевременное обновление вида перетаскивания
В течение этого времени, в соответствии с потребностями бизнеса, вам необходимо кодировать кнопку, которую можно скользить, и щелкать интерфейс. Подобно маленькой точке iPhone, функция заключается в п.
Система Linux использует язык C для разработки системы управления отелем
Система управления отелем 1. Описание функции Эта система относится к системе управления малыми и средними отелями, которая может эффективно управлять работой малых и средних отелей. Система имеет сле.
Всем привет. Как Вы помните в предыдущей статье мы перешли на язык Java для написания небольших приложений по обработки данных, на компьютере, полученных с устройств на микроконтроллере. Также мы условились, что дальнейший материал требует знание начального уровня java. Если его нет, то не расстраивайтесь, самые основы похожи на Си, но объектно-ориентированную часть придется подучить. Литературу я приводил в предыдущей статье.
Итак приступим. Сегодня мы создадим оконное приложение (кнопка и текстовое поле) используя фреймворк awt. Также добавим код обработки событий по нажатию на кнопку и закрытия окна. Хочется сказать о том что вариантов написания кода — много, и с помощью какой библиотеки и как создавать приложение решать только Вам. В дальнейшем мы будем работать с данным языком проектируя Android-приложение под умный дом. Ниже приведен код, который выполняет выше описанную задачу.
import java.awt.*; /*Подключаем библиотеку для создания апплетов и независимых
приложений с графическим интерфейсом.*/
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
Слева на рисунке внешний вид нашего простого оконного приложения на java. На данный момент нас устроит простое меню с одной кнопкой для дальнейших экспериментов. В следующей статье мы научимся мониторить COM — порт, для приема информации с наших устройств, в данном случае такой же строки, которую мы вывели на терминал в статье №42.
Выше использовалась библиотека awt для построения графического интерфейса. В качестве примера, по ссылке, представлено описание приложения с использованием фреймворка JavaFX, а именно написание анимированного splash screen for java application (Слева скрин заставки).
На этом все. Всем пока.
Запись опубликована автором admin137 в рубрике Прикладное программирование на Java с метками awt, Java, кнопка. Добавьте в закладки постоянную ссылку.
Создание проекта
Для начала нам надо создать JavaFX проект в NetBeans, назовем его Login:
Подсказка: после добавления кода в проект NetBeans, нажмите Ctrl (или Cmd) + Shift + I для импорта необходимых пакетов. После появления окна со списком, выберите тот, который начинается с javafx.
JavaFX форма
Создание сетки GridPane
Для формы логина удобно использовать GridPane, потому что этот объект позволяет создать гибкую сетку из столбцов и строк, в которые удобно поместить поля для ввода и кнопки. Вы можете поместить элементы управления в любую ячейку в сетке.
Код для создания GridPane, добавьте его перед строкой primaryStage.show():
Сцена создана с GridPane в качестве корневого узла, это обычная практика при верстке контейнеров. Таким образом при изменении размеров окна, элементы формы будут соответственно реагировать. В нашем примере форма будет оставаться по-середине при увеличении или уменьшении окна. Свойство padding гарантирует, что вокруг формы останется отступ при уменьшении размеров окна.
Данный код создает сцену шириной 300 и высотой 275. Если вы не зададите эти параметры, то сцена будет минимального размера, который необходим для отображения её содержимого.
Добавляем текст, метки и поля формы
Первая строка создает объект типа Text со значением Welcome, который нельзя изменить. Следующая строка использует метод setFont() для задания шрифта, размера и стиля переменной scenetitle. В данном примере мы используем встроенный стиль, но лучше использовать таблицы CSS, работу с ними мы рассмотрим в следующем уроке.
Метод grid.add() добавляет объект scenetitle к слою нашей формы. Нумерация столбцов и строк начинается с 0, т.о. заголовок формы будет добавлен в столбец 0 и строку 0. Последние два аргумента метода grid.add() устанавливают промежутки между столбцами — 2, между строками — 1.
Следующая строка создает объект Label с текстом User Name в столбце 0, строке 1 и Текстовое поле, которое можно редактировать. Текстовое поле добавлено в столбец 1, строку 1. Поле для ввода пароля и метка для него создаются аналогично.
При работе с GridPane можно отобразить границы, это бывает полезно при отладке. Чтобы отобразить границы разметки необходимо установить свойство gridLinesVisible равным true. Запустив после этого программу, вы увидите линии — границы столбцов и строк сетки:
Границы GridPane
Добавление кнопки и текста
Для полноценной работы форме не хватает еще два элемента: Button — кнопка, для отправки формы и Text — объект, который будет отображать информацию при нажатии на кнопку.
Сначала создадим кнопку и поместим её снизу справа — стандартное расположение кнопки в формах. Добавьте этот код перед кодом создания сцены:
Данный код создает кнопку с текстом Sign in и помещает её в вспомогательный объект HBox с отступами 10 пикселей, который служит выравнивания кнопки. Свойство alignment объекта hbBtn установлено равным Pos.BOTTOM_RIGHT, это означает, что кнопка будет выровнена по правому нижнему краю. Сам объект HBox поместим в нашу сетку в ячейку 1, 4.
Теперь добавим элемент Text, для отображения информации. Добавьте этот код до кода создания сцены:
Обработка событий
Обработка событий JavaFX
Теперь запустите приложение, нажмите на кнопку и увидите результат. На этом всё, не пропустите новые уроки!
Читайте также: