Java при нажатии на кнопку сообщение

Обновлено: 05.07.2024

Элемент управления JavaFX Button позволяет приложению выполнять некоторые действия, когда пользователь приложения нажимает кнопку. Элемент представлен классом javafx.scene.control.Button. Кнопка может иметь текст и значок, которые указывают пользователю, что будет делать нажатие кнопки.

Создание

Вы создаете элемент управления Button, создавая экземпляр класса Button:

Текст, отображаемый на кнопке, передается в качестве параметров конструктору Button.

Добавление в граф Scene

Чтобы кнопка была видимой, объект кнопки должен быть добавлен в граф Scene. Это означает добавление его к объекту Scene или как дочерний элемент макета, который присоединен к объекту Scene.

Вот пример, который присоединяет кнопку к графу сцены:

Обратите внимание, что кнопка добавляется непосредственно в объект Scene. Обычно вы вкладываете Button в какой-либо компонент макета.

Результатом выполнения приведенного выше примера кнопки является приложение, которое выглядит следующим образом:

Обратите внимание, что кнопка занимает все пространство, доступное в окне. Вот почему трудно увидеть края кнопки. Когда кнопка добавлена к компоненту макета, вы можете легче увидеть края кнопки.

Текст

Есть два способа установить текст кнопки:

  1. передать текст конструктору Button;
  2. вызвать метод setText() для экземпляра Button. Это можно сделать после создания экземпляра Button. Таким образом, его можно использовать для изменения текста кнопки, которая уже видна. Вот пример:

Размер текста

Вы можете установить размер текста кнопки с помощью свойства CSS -fx-text-size.

Обтекание текстом кнопки

Элемент управления Button поддерживает перенос текста текста кнопки. Под переносом текста подразумевается, что если текст слишком длинный для отображения в одной строке внутри кнопки, текст разбивается на несколько строк.

Вы включаете перенос текста в экземпляре Button с помощью метода setWrapText(). Он принимает один логический параметр. Если вы передаете значение true в setWrapText(), тогда вы включаете перенос текста. Если false, отключаете. Вот пример:

Вот снимок экрана с двумя кнопками JavaFX, для одной из которых включена функция переноса текста:

Изображение

Можно отобразить изображение внутри кнопки рядом с текстом. Класс Button содержит конструктор, который может принимать Node в качестве дополнительного параметра. Вот пример метки, который добавляет изображение с помощью компонента ImageView:

Результатом выполнения приведенного выше примера кнопки является приложение, которое выглядит следующим образом:

Размер

Класс Button содержит набор методов, которые вы можете использовать для установки размера кнопки:

  • Методы setMinWidth() и setMaxWidth() устанавливают минимальную и максимальную ширину, которую должна иметь кнопка.
  • Метод setPrefWidth() устанавливает предпочтительную ширину кнопки. Когда есть достаточно места для отображения кнопки в ее предпочтительной ширине, JavaFX сделает это. Если нет, уменьшит размер кнопки, пока она не достигнет минимальной ширины.
  • Методы setMinHeight() и setMaxHeight() устанавливают минимальную и максимальную высоту, которую должна иметь кнопка.
  • Метод setPrefHeight() устанавливает предпочтительную высоту кнопки. Когда есть достаточно места для отображения кнопки в ее предпочтительной высоте, JavaFX сделает это. Если нет, уменьшит размер, пока она не достигнет минимальной высоты.
  • Методы setMinSize(), setMaxSize() и setPrefSize() устанавливают ширину и высоту кнопки за один вызов. Таким образом, эти методы принимают параметры ширины и высоты:

Вот скриншот двух кнопок. Первая имеет размер по умолчанию, рассчитанный по ее тексту кнопки и компоненту макета, внутри которого она вложена. Вторая имеет предпочтительную ширину 200 и высоту 48, установленную на ней:

События

Чтобы реагировать на нажатие кнопки, необходимо прикрепить прослушиватель событий к объекту Button:

Вот как выглядит присоединение слушателя события щелчка с помощью лямбда-выражения Java:

Наконец, давайте посмотрим на полный пример, который изменяет текст метки при нажатии кнопки:

Мнемоника

Вы можете установить мнемонику для экземпляра Button – это клавиша клавиатуры, которая активирует кнопку при нажатии вместе с клавишей ALT. Таким образом, мнемоника – это сочетание клавиш для активации кнопки.

Мнемоника для кнопки указывается внутри текста кнопки. Вы отмечаете, какая клавиша будет использоваться как мнемоника, помещая символ подчеркивания (_) перед символом в тексте кнопки. Символ подчеркивания не будет отображаться в тексте кнопки. Вот пример:

Обратите внимание, что необходимо сначала вызвать setMnemonicParsing() для кнопки со значением true. Это дает команду кнопке анализировать мнемонику в ее тексте. Если вы вызываете этот метод со значением false, символ подчеркивания в тексте кнопки будет просто отображаться как текст и не будет интерпретироваться как мнемоника.

Вторая строка устанавливает текст _Click . Это говорит кнопке использовать ключ с как мнемонику. Мнемоника нечувствительна к регистру, поэтому она не должна быть прописной буквой C, которая активирует кнопку.

Чтобы активировать кнопку, теперь вы можете нажать ALT-C (одновременно). Это активирует кнопку, как если бы вы щелкнули по ней мышью.

Вы также можете сначала нажать клавишу ALT один раз. Это покажет мнемонику кнопки в тексте кнопки. Затем вы можете нажать клавишу c. Если вы нажмете ALT, а затем снова ALT, мнемоника сначала будет показана, а затем снова скрыта. Когда мнемоника видна, вы можете активировать кнопку только с помощью мнемонической клавиши, не нажимая при этом ALT. Когда мнемоника не видна, вы должны одновременно нажать ALT и клавишу мнемоники, чтобы активировать кнопку.

Вот два скриншота, показывающих, как это выглядит, когда мнемоника невидима и видима:

CSS-стили

Вы можете стилизовать кнопку, используя стили CSS. Элемент управления Button поддерживает следующие стили CSS:

Вот пример установки цвета фона кнопки на красный:

Этот пример устанавливает стиль непосредственно для кнопки с помощью метода setStyle(), но вы также можете стилизовать кнопку с помощью таблиц стилей.

Вот пример, который создает 4 разных кнопки. На каждой установлен стиль CSS.

Вот скриншот 4 кнопок JavaFX с их стилем CSS:

Первая кнопка имеет свойства CSS -fx-border-width и -fx-border-color. Это приводит к появлению красной рамки шириной 5 пикселей.

Вторая имеет свойство CSS -fx-background-color. Это приводит к зеленому цвету фона.

Третья имеет свойство CSS -fx-font-size. В результате получается кнопка с текстом, который в 2 раза больше обычного.

Четвертая имеет набор CSS-свойств -fx-text-fill. Это приводит к кнопке с синим цветом текста.

Вы можете объединить стили CSS для кнопки, просто установив для нее несколько свойств CSS, как это сделала первая кнопка в приведенном выше примере.

Отключение

Вы можете отключить кнопку с помощью метода setDisable(). Он принимает логический параметр, который указывает, должна ли кнопка быть отключена или нет. Значение true означает, что кнопка будет отключена, а значение false означает, что она не будет отключена, что означает, что она включена. Вот пример отключения:

Изучая то, что есть в интернете находил всякие обработчики, слушатели, ивенты и т.д. Сам не могу понять как это должно даже выглядеть, не говоря уже о том чтобы работало. Помогите!


1 ответ 1

Для получения текста из JFrame поля используйте метод .getText() и записывайте этот текст в String переменную. Например, есть такой код.

Далее делаем, что хотим со строкой, в ней будет текст из поля output

Обработку нажатия на кнопку графического интерфейса можно делать таким образом.

Если нужно обработать нажатие на какую-то клавишу, скажем F1. F9 или Tab, Space и так далее, используют команду виртуальной кнопки

Если Вам нужно записать в поле output текст с клавиатуры, я бы посоветовал сделать так

Обрабатываем нажатие на кнопку мыши

Если нужно закрыть окно по нажатию на "Крестик", то существуют специальные функции, и мышь вам в этом случае трогать не надо. Закрытие приложения делается так

Каждое приложение, которое имеет графический интерфейс пользователя не может обходиться без кнопок. В Java Swing кнопка представлена классом JButton. У кнопки имеются различные методы для ее конфигурирования — установка надписи на JButton, установка иконки, выравнивание текста, установка размеров и так далее. Кроме всего прочего разработчику необходимо навесить на JButton слушателя, который будет выполняться как только пользователь нажмет на кнопку. Как это сделать? Поговорим об этом ниже.

Ранее я писал, что все взаимодействия пользователя с приложением основано на событиях. Не является исключением и JButton. Как только пользователь нажимает кнопку, создается ActionEvent событие, которое передается слушателям кнопки. Для того, чтобы организовать слушателя Swing предоставляет интерфейс ActionListener, который необходимо реализовать. Интерфейс ActionListener требует только реализации одного метода — actionPerformed. Пример класса, реализующего интерфейс ActionListener представлен ниже.

После того, как обработчик создан, его необходимо добавить к кнопке. Делается это при помощи метода addActionListener. В качестве параметра методу передается обработчик. Например, это можно сделать вот так:

Здесь мы создаем сначала кнопку. Потом создаем экземпляр нашего слушателя TestActionListener, а затем добавляем его в качестве слушателя к кнопке с помощью вызова addActionListener и передаем ему экземпляр обработчика. Вообще слушателей может быть неопределенное количество. Если нам будет необходимо два или более слушателей, которые должны будут по-разному реагировать на нажатие кнопки, то для каждого из них вызовем addActionListener. Кроме того может когда-нибудь понадобиться отключить слушателя и сказать ему, чтобы он больше не прослушивал нажатие кнопки. Это можно сделать при помощи метода removeActionListener. Сюда в качестве параметра придется передать ссылку на слушателя, которого хотим удалить из списка слушателей кнопки JButton.

Ну и напоследок пример приложения для демонстрации обработчиков нажатия кнопки JButton.

Стоит сказать про несколько интересных на мой взгляд моментов. Первый — это использование action command. Можно заметить, что у кнопок вызывается метод setActionCommand, в который для каждой кнопки передает своё строковое значение. Таким образом в приложении можно понять, какая именно кнопка была нажата, если обработку нажатия нескольких кнопок выполняет один слушатель. Для того, чтобы узнать это у ActionEvent берется action command с помощью метода getActionCommand.

Второй момент — для обработки события нажатия кнопки JButton можно создать анонимный класс, который реализует интерфейс ActionListener. Это можно наблюдать вот здесь:


Создание окна с кнопкой и текстом
import java.awt.Color; import java.util.EventObject; import java.awt.Dimension; import.


Кнопка, создающее новое окно с кнопкой и с заблокированной кнопкой закрытия окна
Столкнулся с такой проблемой: нужно создать окно, в котором будет две кнопки. Первая кнопка.


Закрытие окна кнопкой
Добрый вечер. Подскажите пожалуйста как закрыть окно кнопкой. Вот что имеется main.cpp.


Сворачивание окна отдельной кнопкой
Всем доброго времени суток. Кто знает как продублировать кнопку "minimize", а вернее ту функцию.

Решение

Вот я скомпилировал приложение в Main.java, а как его запустить теперь? Или может я как-то не так компилирую?

Захожу в C:\Users\ИМЯ_УЧ_ЗАПИСИ\workspace\TestProject\src\TestPackage и там вижу файл "Main.java"
Как теперь это дело запускать? Чтобы как *.exe в обычных программах?

Вот скриншот PackageExplorer:

Casper-SC, вы сначала компилируете его эклипсом, а потом экспортируете это счастье в Jar и запускаете двойным кликом по jar-файлу или из терминала

О гуд. Разобрался сам как экспортировать. Я просто не знал, что вообще что-то нужно экспортировать. Да и вообще пока просто хотел попробовать написать, что нибудь на Java.

Мат часть учить буду скорее всего по книжке какой нибудь с примерами, но чуть позже. Про то, что Java не делает нативные эксэшники я знал (да хоть и не нативные). Я имел ввиду, что мне было не понятно, как создать вообще исполняемый файл, а *.exe привёл для большего понимания моего вопроса.


M128K145, кстати вот это я совершенно не понял, что и куда этот текст вставлять, но зато понял, что нужно вообще экспортировать.

Про матчасть это был хороший совет на самом деле. По приведенной ссылке есть ответы на все Ваши вопросы.

Про матчасть это был хороший совет на самом деле. По приведенной ссылке есть ответы на все Ваши вопросы.

Читайте также: