Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример 4.11. Задача для самостоятельного решения на занятии 4.4. 4.4. Задания к лабораторной работе №4. 4.4.1. Требования к отчету (отчет обязателен)




Пример 4. 11

class Handler implements ActionListener {

boolean flag = true;

JButton b;

public Handler (JButton bb) { b = bb; }

   @Override

    public void actionPerformed(ActionEvent e) {

    flag =! flag;

 b. setText(flag? " Hello! ": " Goodbye! " );

 }

}

 

public class Events extends JFrame {

 

public static void main(String[] args) {

   JFrame f = new JFrame(" Events" );

   JPanel p = new JPanel();

   JButton b1 = new JButton(" Hello! " );

   JButton b2 = new JButton(" Hello! " );

   Handler h1 = new Handler(b2);

   Handler h2 = new Handler(b1);

   b1. addActionListener(h1);

   b2. addActionListener(h2);

   p. add(b1);

   p. add(b2);

f. setSize(300, 200);

f. add(p);

f. setDefaultCloseOperation(EXIT_ON_CLOSE);

f. setVisible(true);

 }

}

Интерфейс ActionListener имеет всего один метод — actionPerformed(), вызываемый у объекта- обработчика событий для выполнения надлежащих действий по обработке события.

Задача для самостоятельного решения на занятии 4. 4.

Написать программу, при запуске которой в главном окне появляется две кнопки, каждая из которых включа­ет/отключает другую (для включения кнопки нужно вызвать метод setEnabled(true), для отключения — setEnabled (false) ).

4. 4. Задания к лабораторной работе №4

1. Разработать игру 2048.
2. Разработать калькулятор с визуальным интерфейсом
3. ** Разработать примитивный графический редактор, который, например, при нажатии на кнопку " окружность" рисует окружность с заданным радиусом. Фигуры: линия квадрат, круг, овал.
4. Реализовать визуальную работу банкомата — снятие и пополнение денег, вычисление остатка на счету и процентов по депозиту. (Класс Account и класс Bancomat)
5. Разработать простую кулинарную книгу (10 блюд для мультиварки): При нажатии на кнопку с названием блюда – в окне ингредиенты отобразить ингредиенты, в окне рецепт – рецепт.
6. Разработать приложение-органайзер на месяц: в запись для указанного дня переносить из строки вводи задание на этот день.
7. Разработать игру типа " Balls".
8. Разработать каталог машин в автосалоне до 15 наименований: при выборе марки машины из выпадающего списка отображать характеристики автомобиля и ее фото.

*) Примечание События типа ActionEvent проявляются в компонентах Button, List, TextField, JComboBox, JTextField, кнопках класса AbstractButton и его наследниках. Т. е во всех вариантах необходимо добавлять объект (или применять интерфейс) ActionListener, в котором реализовать обработчик в функции public void actionPerfomed(ActionEvent e).

**) В этом задании придется разбираться с рисованием и перерисовкой.

4. 4. 1. Требования к отчету (отчет обязателен)

 

  1. Привести UML-диаграмму классов (не забудьте о вложенных классах, если они есть)
  2. Текст программы с комментариями. Классы должны находиться в разных файлах.

Рисование

За рисование графических примитивов в компонентах Component и JComponent отвечает объект класса Graphics (подробнее см. лекцию 8).


Пример 4. 12

package paintcomp;

 

import java. awt. *;

import javax. swing. *;

 

/**

 *

 * @author owner

 */

public class PaintComp extends JFrame{

    

     public class DrawingPanel extends JPanel {

        

    @Override

    protected void paintComponent(Graphics g) {

        super. paintComponent(g);

        g. setColor(Color. GREEN);

        g. fillOval(50, 30, 100, 150);

        g. setC olor(Color. BLUE);

        g. fillRect(90, 80, 150, 100);

        g. setColor(Color. RED);

        g. fillRoundRect(130, 30, 80, 160, 20, 40);

    }

}

    

public PaintComp () {

    super(" Пример окна верхнего уровня" );

    setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);

    setSize(300, 250);

add(new DrawingPanel());

    }

 

 

public static void main(String[] args) {

EventQueue. invokeLater(new Runnable()

    {@Override

     public void run() {

        new PaintComp(). setVisible(true);

    }

    });

}

}

 

Важно: Во всех предыдущих примерах графические окна были запущены некорректно.

Правильно: все действия с библиотекой Swing запускать в потоке выполнения обработки событий (Event Dispatch Thread). Для добавления своего кода в поток обработки событий предназначен статический метод EventQueue. invokeLater(Runnable), принимающий в качестве аргумента экземпляр класса, реализующего интерфейс Runnable.

Интерфейс Runnable:

Интерфейс Runnable предназначен для реализации потоков выполнения в Java. Он содержит единственный метод void run(), который вызывается при запуске потока.

public interface Runnable { public void run(); }

Пример:


import java. awt. *;

import javax. swing. *;

 public class Window {

 

public static void main(String args[]) {

 

 EventQueue. invokeLater(new Runnable() {

      public void run() {

      JFrame frame = new JFrame(" Пример окна верхнего уровня" );

frame. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);                frame. setSize(300, 200); frame. setVisible(true);

      }

 });

 }

}

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

 

ЛАБОРАТОРНАЯ РАБОТА 5

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...