Меню сайта
Категории раздела
Мои лекции [2]
C# [2]
as3 [3]
теория и практика
java [1]
первые шаги в java. Теория и практика
Web [2]
CSS, HTML, JS и т.д.
MyProgramms [2]
Образование [1]
лекции разного уровня
Python [0]
Python, микрофреймворк Flask, фреймворк Django
Мои ссылки
  • Дизайн-магазин
  • Поиск
    Статистика


    Четверг, 18.04.2024, 23:16ГлавнаяМой профильРегистрацияВыходВход
    Добро пожаловать в мой MIR!
    Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
    Главная » Статьи » Программирование » java

    Создание окна с кнопкой на java
    Выбирая между 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 есть уже свои навороты, но о них можно будет узнать потом, если потребуется, а сейчас достаточно основ.

    Запускаем среду разработки и видим следующее

    Quick start

    Рисунок 1- Выбор действий

    Сначала можно войти в Configure - Settings - и произвести какие-нибудь настройки.

    Но на мой взгляд там всё настроено и ничего менять не нужно, поэтому для новичка можно изменить только тему среды. 

    Для этого внизу смотрим на надпись IDE Settings и первое у меня это Appearance.

    Выбираю ее и справа в окне есть выпадающий список Theme.

    Меняю, на какую нужно и нажимаю внизу на кнопку OK. Среда перезагрузится и покажет выбранную мной тему.

    Возвращаемся к нашим баранам, а точнее к рисунку 1. И как уже показано на картинке, выбираем пункт Создать новый проект. Открывается следующее окно

    Project name

    Рисунок 2 - New project

    Здесь необходимо заполнить поля. Вписываю имя проекта, указываю место, куда сохранить проект и указываю, куда я установила jdk.

    Своему проекту дала имя MyFrameButton. Всё заполнила и нажала OK.

    Дальше у нас создается и открывается проект. Но для начала работы этого не достаточно. Теперь требуется создать свой первый класс.

    java проект

    Рисунок 3 - Внешний вид проекта

    На рисунке можно увидеть класс FirstProgram. Этот класс был создан мной для работы. Как я это сделала?

    Да очень просто. Выбрала папочку src, это видно на рисунке. Открыла контекстное меню и выполнила следующее действие: New - Java Class.

    Программа потребовала с меня имя класса, вот я и написала FirstProgram, затем нажала OK и получила поле для работы.

    Ну вот, пришло время и покодить.

     

    Кодирование

    В созданный класс первым делом в самом вверху написала

    import java.awt.*;

    Решила в конце указать (* - всё), так как еще не знаю, что мне понадобится от туда.

    При кодировании рядом с моей строчкой появились следующие. Я их не писала, они сами вписались.

    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 FirstProgram(){}

    Отмечу, что это конструктор класса, поэтому у него такое же имя как и у класса. Ну и модификатор такой же.

    После конструктора добавила статическую точку входа программы.

     public static void main(String args[]){}

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

    Модификатор public для того, что бы она была доступна всем в проекте.

    Настройка окна приложения

    В as3 первым делом вызывали предка, а потом проводили все остальные действия. В Java оказывается тот же принцип и вызывается так же.

    Итак, в конструкторе первым делом запишем такие строчки

    super("Первая программа");

    // вызываем предка, в данном случае Frame и указываем какое имя заголовка будет
    setSize(200, 200);

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

    вид окна

    рисунок 4 - Внешний вид окна без параметров

    Пора уже определиться с тем, что у нас будет на форме.

    Внешний вид

    На форме у нас будет Label, в котором показывается какое-то сообщение.

    В нижней части экрана располагается кнопка 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 и добавляем к нему отображение счетчика

    Также нужно учесть расположение объектов на форме. Для этого добавляем следующий код:

     add(myText, BorderLayout.NORTH);

    // Label будет расположен вверху, что значит на Северной части формы
     add(myButton, BorderLayout.SOUTH);

    // Button будет расположен внизу, значит на Южной части формы

    Но что же будет, если я не напишу расположение. Прикинем на примере myText. Закомментируем его, но оставим для myButton.

    В результате я увижу такую форму.

    потерялся Label

    рисунок 5 - Без Label

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

    Событие Кнопки

    Подходим постепенно к завершению. Как и AS3 оказывается Java тоже использует Слушателя для создания события.

    Однако есть отличия. В AS3 я использовала addEventListener, а тут addActionListener.

    Итак, события нужно для кнопки, поэтому вешать слушателя нужно кнопки.

    Для этого я пишу имя объекта кнопки, ставлю точку и выбираю из выпадающего списка событие слушателя.

    Таким образом у меня получается вот так.

    myButton.addActionListener();

    Ну вот, в AS3 я прописывала свое название события и константу события, а в Java  нужно написать создание нового события, т.е new ActionListener.

    Выглядит это так

    myButton.addActionListener(new ActionListener()

    Как только я это написала, то увидела, что была автоматически создана следующая строка.

    Отмечу еще раз, я ее не писала, она САМА автоматически появилась после моей строчки.

     @Override
      public void actionPerformed(ActionEvent e) {

    Итак, я вижу, что мне автоматически подготовили место для работы. Поэтому внутри процедуры я впишу следующий свой код.

     countClick++;

    // увеличиваю переменную на 1
     myText.setText("Hello World "+countClick);

    // обновляю текст в Label. Решила оставить текст без изменения, но могла бы вместо Hello World написать что-то другое.Так что обновляется только счетчик.
                }

    // закрываю actionPerformed
            }

    // закрываю new ActionListener
      );

    // закрываю скобку события Слушателя

    Ну вот и всё. Код в классе FirstProgram закончился. Осталось прописать код для запуска созданного класса.

    Кодируем в Main

    FirstProgram myProgram = new FirstProgram();

    // создаем объект myProgram своего созданного класса FirstProgram
    myProgram.setVisible(true);

    // устанавливаем видимость объекта.

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

    Оказывается этот функционал подключается отдельно. Так как я всё же хочу закрывать свое окно, то решила подключить и эту функцию.

    Закрыть окно

    Для работы с меню окна используется слушатель window, а за закрытие отвечает адаптер.

    Прочитала, что событие WindowClosing отвечает за закрытие окна на крестик. А чтобы окно закрывалось используют команду dispose().

    Соединив всю информацию вместе, получила следующий код:

    myProgram.addWindowListener(new WindowAdapter() {

    // так как действие должно быть с окном, то вешаем событие на созданный объект.

    Принцип работы тот же, что и был, выбираю, прописываю new WindowAdapter() и появляется внизу текст события
    @Override
    public void windowClosing(WindowEvent e) {
    super.windowClosing(e);

    // этот текст был создан автоматически. Я вижу, что вызывается родитель с методом Закрыть окно,

    в качестве аргумента отправляют Событие(event), с которым нужно дальше работать для реализации метода.

    Следуя созданной для меня записи, я написала следующий код
     e.getWindow().dispose();

    // использую полученное событие, указываю, что мне нужно окно этого события, и указываю, что я хочу с ним сделать, а точнее уничтожить или освободить.
               }
           }
        );

    Всё. Запускаю и вижу, что программа работает.

     

    Категория: java | Добавил: halenka (01.04.2014)
    Просмотров: 14436 | Теги: первая программа, кнопка, intellij idea, оконное приложение, hello, java, button | Рейтинг: 2.2/6
    Всего комментариев: 0

    Copyright MyCorp © 2024