Как сделать кнопку в джава
Как сделать кнопку в джава
Перед началом работы познакомилась с существующими компонентами в Java, такими как Label, Button, Panel, TextArea.
Посмотрела как их создают, если сравнить с as3, то принцип такой же, поэтому заострять внимание не стала.
Остался один вопрос. Почему я выбрала пакет awt, а не swing? Да очень просто, когда я читала про java, то там писали про awt.
А про swing я узнала уже потом, когда писала программу, но решила, так как у них принцип работы одинаковый, то не стоит заморачиваться.
Ну да, в swing есть уже свои навороты, но о них можно будет узнать потом, если потребуется, а сейчас достаточно основ.
Запускаем среду разработки и видим следующее
Рисунок 1- Выбор действий
Но на мой взгляд там всё настроено и ничего менять не нужно, поэтому для новичка можно изменить только тему среды.
Для этого внизу смотрим на надпись IDE Settings и первое у меня это Appearance.
Выбираю ее и справа в окне есть выпадающий список Theme.
Меняю, на какую нужно и нажимаю внизу на кнопку OK. Среда перезагрузится и покажет выбранную мной тему.
Возвращаемся к нашим баранам, а точнее к рисунку 1. И как уже показано на картинке, выбираем пункт Создать новый проект. Открывается следующее окно
Здесь необходимо заполнить поля. Вписываю имя проекта, указываю место, куда сохранить проект и указываю, куда я установила jdk.
Своему проекту дала имя MyFrameButton. Всё заполнила и нажала OK.
Дальше у нас создается и открывается проект. Но для начала работы этого не достаточно. Теперь требуется создать свой первый класс.
На рисунке можно увидеть класс FirstProgram. Этот класс был создан мной для работы. Как я это сделала?
Программа потребовала с меня имя класса, вот я и написала 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 <
После имени класса добавила слово
Итак, в буквальном смысле, это звучит так: Общественный класс FirstProgram является потомком класса Frame, что значит, имеет доступ к его свойствам и методам.
При создании программы обратила внимание, что конструктор класса не создается автоматически, отличии от AS3.
Поэтому прописала конструктор класса.
Отмечу, что это конструктор класса, поэтому у него такое же имя как и у класса. Ну и модификатор такой же.
После конструктора добавила статическую точку входа программы.
public static void main(String args[])<>
Как я прочитала, эта точка для запуска программы. А статическая, потому что она одна должна быть во всём проекте.
Модификатор public для того, что бы она была доступна всем в проекте.
Настройка окна приложения
В as3 первым делом вызывали предка, а потом проводили все остальные действия. В Java оказывается тот же принцип и вызывается так же.
Итак, в конструкторе первым делом запишем такие строчки
// вызываем предка, в данном случае Frame и указываем какое имя заголовка будет
setSize(200, 200);
// что бы окно не появлялось маленьким, устанавливаем нужный нам размер.
Пора уже определиться с тем, что у нас будет на форме.
Внешний вид
На форме у нас будет Label, в котором показывается какое-то сообщение.
В нижней части экрана располагается кнопка Button, при нажатии на которую будет происходить какое-то действие.
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.
В результате я увижу такую форму.
Итак, мы видим кнопку с надписью, но текстового поля с надписью на форме нет. Вот так будет выглядеть приложение, если забыть про расположение.
Событие Кнопки
Подходим постепенно к завершению. Как и 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();
// использую полученное событие, указываю, что мне нужно окно этого события, и указываю, что я хочу с ним сделать, а точнее уничтожить или освободить.
>
>
);
Всё. Запускаю и вижу, что программа работает.
Как сделать кнопку в джава
В данной статье мы рассмотрим процесс создания простой программы, которая состоит из 3 кнопок, при нажатии на которые фон программы меняет свой цвет. За обработку событий в Java отвечает интерфейс ActionListener. У данного интерфейса существует единственный метод actionPerformed( ActionEvent event), данный метод получает в качестве параметра произошедшее событие(в нашем случае это нажатие кнопки). Ниже приведен полный код программы с подробными комментариями.
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Solution <
public static void main(String []args) <
ButtonFrame frame= new ButtonFrame();//создаем фрейм
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//операция отвечающая за окончание программы после закрытия фрейма
frame.setVisible(true);//делаем фрейм видимым
>
>
class ButtonFrame extends JFrame/создаем класс отвечающий за фрейм
public ButtonFrame()/конструктор данного класа
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHE);//размеры фрейма
setTitle(«Button»);//название фрейма
ButtonPanel panel=new ButtonPanel();//создаем панель
add(panel);//добавляем панель на фрейм
>
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHE=200;
>
class ButtonPanel extends JPanel/класс отвечающий за фрейм
public ButtonPanel() < //конструктор панели
JButton yellowButton=new JButton(«yellow»);//создаем кнопки(в качестве параметра текст отображаемы на кнопке)
JButton blueButton=new JButton(«blue»);
JButton redButton=new JButton(«red»);
add(yellowButton);//добавляем кнопки на панель
add(blueButton);
add(redButton);
ColorAction yellowAction=new ColorAction(Color.yellow);//создаем событие для каждого цвета(параметр-цвет)
ColorAction blueAction=new ColorAction(Color.blue);
ColorAction redAction=new ColorAction(Color.red);
yellowButton.addActionListener(yellowAction);//передаем каждое событие соответствующей кнопке
blueButton.addActionListener(blueAction);
redButton.addActionListener(redAction);
>
private class ColorAction implements ActionListener/реализуем интерфейс отвечающий за события
public ColorAction(Color c)/конструктор получает цвет в качестве параметра
backgroundColor=c;
>
public void actionPerformed(ActionEvent event)/реакция на нажатие кнопки-смена цвета панели
setBackground(backgroundColor);
>
private Color backgroundColor;
>
>
оШИБОК БОЛЬШЕ ЧЕМ СТРОК.
В чем польза вашего комментария? В том, что вы умеете жать на КАПС? Если видите ошибку и хотите помочь, то укажите, в чем именно вы видите ошибку, иначе лучше промолчать.
Парниша скопировал код в свою уникальную среду, и без понимания хотел построить проект. С ошибками лучше код подавать, тогда человек начнет изучать.
Глупый вопрос, но всё же. Как расположить кнопки по вертикальной оси?