Розробка навчальної програми "Проїзд дорожніх перехресть"

курсовая работа

2. Огляд літературних джерел

2.1 Обгрунтування вибраної мови програмування

Java (вимовляється Джава; інколи -- Ява) -- обєктно-орієнтована мова програмування, випущена компанією Sun Microsystems у 1995 році як основний компонент платформи Java. Зараз мовою займається компанія Oracle, яка придбала Sun Microsystems у 2009 році. Синтаксис мови багато в чому походить від C та C++. У офіційній реалізації, Java програми компілюються у байткод, який при виконанні інтерпретується віртуальною машиною для конкретної платформи.

Oracle надає компілятор Java та віртуальну машину Java, які задовольняють специфікації Java Community Process, під ліцезією GNU General Public License.

Мова значно запозичила синтаксис із C і C++. Зокрема, взято за основу обєктну модель С++, проте її модифіковано. Усунуто можливість появи деяких конфліктних ситуацій, що могли виникнути через помилки програміста та полегшено сам процес розробки обєктно-орієнтованих програм. Ряд дій, які в С/C++ повинні здійснювати програмісти, доручено віртуальній машині. Передусім, Java розроблялась як платформо-незалежна мова, тому вона має менше низькорівневих можливостей для роботи з апаратним забезпеченням. За необхідності таких дій java дозволяє викликати підпрограми, написані іншими мовами програмування.

Java вплинула на розвиток J++, що розроблялась компанією Microsoft. Роботу над J++ було зупинено через судовий позов компанії Sun Microsystems, оскільки ця мова програмування була модифікацією Java. Пізніше в новій платформі Microsoft .NET випустило J#, щоб полегшити міграцію програмістів J++ або Java на нову платформу. З часом нова мова програмування С#, стала основною мовою платформи, перейнявши багато чого з Java. J# востаннє включався в версіюMicrosoft Visual Studio 2005. Мова сценаріїв JavaScript має схожу із Java назву і синтаксис, але не повязана із Java.

2.2 Опис методів та алгоритмів вирішення задачі

Змістом мови Java є обєктно-орієнтоване програмування (OOP, Object-oriented Programming). Фактично всі програми Java обєктно-орієнтовані (тоді як, наприклад, в мові C++ це не так).

Три принципи ООП

Всі мови обєктно-орієнтованого програмування забезпечують механізми, які допомагають вам реалізувати обєктно-орієнтовану модель. До них відносяться інкапсуляція, спадкоємство і поліморфізм.

Інкапсуляція

Інкапсуляція - це механізм, який звязує код разом з оброблюваними їм даними і зберігає їх в безпеці як від зовнішнього впливу, так від помилкового використання. Можна представити інкапсуляцію як захисну оболонку, яка оберігає код і дані від довільного доступу з інших кодів, визначених поза цією оболонкою. Доступ до коду і даних всередині оболонки строго контролюється через добре певний інтерфейс. Щоб співвіднести це з реальним світом, розглянемо автоматичну трансмісію автомобіля. Вона інкапсулює сотні біт інформації про вашу машину, наприклад, величину прискорення, нахил поверхні, на якій знаходиться машина, і позицію коробки передач. Як користувач ви маєте тільки один метод дії на цю складну інкапсуляцію - переміщення коробки передач. Ви не можете, наприклад вплинути на трансмісію, використовуючи сигнали повороту або склоочисники. Таким чином, коробка передач є вдало певний (насправді - унікальний) інтерфейс до трансмісії. Далі, все, що відбувається всередині трансмісії, ніяк не впливає на її зовнішні обєкти. Наприклад, зсув важеля передач ніяк не позначається на сигналах повороту. Саме тому, що автоматична трансмісія інкапсульована, маса виробників автомобілів може реалізувати її будь-яким способом, яким вони хочуть. Проте з погляду водіїв всі трансмісії працюють однаково. Ту ж саму ідею можна застосувати і до програмування. Потужність інкапсульованого коду полягає в тому, що кожен знає, як дістати до нього доступ, і може користуватися його незалежно від деталей його реалізації і без боязні несподіваних побічних ефектів.

Основою інкапсуляції в мові Java є клас. Хоча класи будуть детально розглянуті далі, корисно буде їх коротке обговорення. Клас визначає структуру і поведінку (дані і код) деякого набору обєктів. Кожен обєкт заданого класу містить як структуру (дані), так і поведінку, визначувані класом (неначебто вони були проштамповані деяким шаблоном у формі класу). З цієї причини про обєкт іноді говорять як про екземпляр класу. Таким чином, клас - це логічна конструкція, а обєкт - це фізична реальність.

Коли ви створюєте клас, потрібно специфікувати код і дані, які складають цей клас. Всі разом ці елементи називають членами (members) класу. Дані, які визначені в класі, називають членами-змінними (member variables) або змінними екземпляра (instance variables). Код, який оперує цими даними, називають членами-методами (member methods) або просто методами (methods). У правильно записаних Java-програмах методи визначають, як можна використовувати члени-змінні. Це означає, що поведінка й інтерфейс класу визначаються методами, що оперують на даних його екземплярів.

Оскільки мета класу - інкапсуляція складності, то існують механізми скриття складності реалізації всередині класу. Кожен метод або змінна в класі може бути помічена як private (приватний або локальний) або public (загальний). Модифікатор public вказує на все, що потрібне або можна знати зовнішнім користувачам класу. Методи і дані з модифікатором private можуть бути доступні тільки в коді, що є членом даного класу. Будь-який код, що не є членом класу, не має доступу до private-методів або змінних. Оскільки private-члени класу виявляються доступними іншим частинам вашої програми тільки через public-методи класу, ви можете бути впевнені, що ніякі невідповідні дії не виконаються. Звичайно, це означає, що public-інтерфейс має бути ретельно спроектований, щоб не розкривати дуже багато внутрішніх членів класу.

Спадковість

Спадковість - процес, за допомогою якого один обєкт набуває властивостей іншого обєкту. Даний принцип важливий тому, що підтримує концепцію ієрархічної класифікації. Як вже розповідалося вище, найбільша частина знань стає керованою тільки за допомогою ієрархічних (тобто організованих зверху "вниз") класифікацій. Наприклад, порода пошукових мисливських собак Golden Retriever є частиною класифікації dog (собаки), яка, у свою чергу, є частина класу Memmal (ссавці) - підкласу великого класу Animal (тварини). Без застосування класифікацій кожен обєкт потребував би явного визначення всіх своїх характеристик. При використанні спадковості обєкт потребує визначення тільки тих якостей, які роблять його унікальним у власному класі. Він може успадковувати загальні властивості від свого батька. Тому саме механізм спадковості дає можливість одному обєкту бути специфічним екземпляром більш загального випадку.

Спадковість взаємодіє також і з інкапсуляцією. Якщо даний клас інкапсулює деякі атрибути, то будь-який підклас матиме ті ж атрибути плюс атрибут, який він додає як частина своєї спеціалізації. Це ключова концепція, яка дозволяє обєктно-орієнтованим програмам рости по складності лінійно, а не геометрично. Новий підклас успадковує всі атрибути всіх його предків. Він не має непередбачуваних взаємодій з більшістю решти кодів у системі.

Поліморфізм

Поліморфізм (від грец. - що "має багато форм") - властивість, яка дозволяє використовувати один інтерфейс для загального класу дій. Специфічна дія визначається точною природою ситуації. Розглянемо стек (список типу LIFO - Last-in, First-out). Ви можете мати програму, яка вимагає три типи стеків. Один стек використовується для цілих значень, інший - для значень з плаваючою крапкою, і третій - для символів. Алгоритм, який реалізує кожен стек, - один і той же, хоча дані, що зберігаються, різні. У не обєктно-орієнтованій мові від вас би потрібно було створити три різні набори стекових підпрограм, кожен з яких мав би власне імя. Внаслідок поліморфізму в мові Java можна специфікувати загальний для всіх типів даних набір стекових підпрограм, що використовують одне і те ж імя.

2.3 Обґрунтування вибору базового рішення

У Java є 2 основних пакети для створення графічних інтерфейсів ( Graphics User Interface ) . Це Abstract Windows Toolkit ( AWT ) і Swing . AWT використовує віджети операційної системи, тому ця бібліотека є трохи швидшою.

Для груповання компонентів інтерфейсу використовуються контейнери ( Container ) . Найчастіше використовується контейнер JFrame (є ще JWindows і JApplet ) . Методи , які можуть знадобитися:

setBounds ( x , y , w , h ) - вказує координати верхній лівій вершини вікна , а також її ширину і висоту.

setResizable ( bool ) - вказує , чи можна змінювати розмір вікна .

setTitle ( str ) - встановлює назву вікна .

setVisible ( bool ) - відображає вікно.

setDefaultCloseOperation ( operation ) - вказує операцію , яка буде виконана при закритті вікна .

Основні елементи управління:

JLabel - елемент для відображення фіксованого тексту;

JTextField - простий edit - box ;

JButton - кнопка ;

JCheckBox - елемент вибору ;

JRadioButton - радіо кнопка.

При відображенні елементів управління використовуються спеціальні менеджери - LayoutManager .

FlowLayout - використовується для послідовного відображення елементів . Якщо елемент не поміщається в конкретну рядок , він відображається у наступній.

GridLayout - відображення елементів у вигляді таблиці з однаковими розмірами вічок .

BorderLayout - використовується при відображенні не більше 5 елементів . Ці елементи розташовуються по краях кадру і в Ценрт : North , South , East , West , Center.

BoxLayout - відображає елементи у вигляді рядка або колонки.

GridBagLayout - дозволяє призначати місцерозташування і розмір кожного віджета . Це найскладніший , але і найефективніший вид відображення

.

3. Спеціальна частина

3.1. Основні функції програмного продукту

Програма «Проїзд торожній перехресть» виконує такі функції:

Можливість проходження навчальних і екзаменаційних тестів .

Покозує результат який набраний під час проходження тесту.

Вивчення теорії з візуальним поясненням і коментування їх для кращого розуміння експертом.

Можливість ознайомлення з правилами проїзду перехресть.

Короткі теоретичні відомості про розробника.

3.2 Структура програмного продукту

Розроблена програма складається із восьми класів.

Головний клас програми (menu.java) містить головне меню програми(JMenuBar).

Клас class test1 - призначений для реалізації пробного тесту.

Основні елементи:

JRadioButton

Panel

ButtonGroup

JLabel

JButton

Такі самі елементи я використав в класі class examen призначений для реалізації екземенаційного тесту.

Класи zteoria, nereg, reg - призначений для виводу навчальної теорії по роїзде дорожніх перехресть.

Клас titulka- не мітить обробників подій, а лише виводить інформацію Про розробника.

Клас prog - виводить інформацію Про програму з текстового документую.

3.3 Розробка алгоритму

UML-діаграма

3.4 Розробка програми

Для створення головного вікна курсової роботи я використав наступний програмний код:

JFrame f = new JFrame("Проїзд дорожніх перехресть"); // Створює головне вікно програми;

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Встановлює стандартну операцію закриття для вікна, без цього вікно не закриється після активування кнопки закриття(Стандартно HIDE_ON_CLOSE, що просто приховує вікно);

frame.setResizable(false);// зобороняє змінювати розмір форми;

frame.setSize(550, 390); // Встановлює розміри вікна

frame.setVisible(true);// Вснановлює мовидимість=істина, тим самим показуючи вікно на екрані.

Перехід на тестові білети реалізований так:

txtFileItem.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {

new test1();

}});

Для створення тесту бувреалізований наступні компонети:

JLabel l = new JLabel(""); // Загружає картинку для питання в JLabel

JLabel l0 = new JLabel("В якому порядку проїдуть перхрестя транспортні засоби?"); // Записує питання для завдання JLabel

JLabel l1 = new JLabel("Ваша оцінка:");

JLabel l2 = new JLabel(""); // Записує результат пройденого тесту JLabel

Для створення текстовго поля бувреалізований наступний програмний код, який зчитує текст з зовнішнього текстового файлу і забороняє його редагування:

ta.setFont(tnr40);

StringBuffer contents = new StringBuffer();

BufferedReader reader = null;

try{

reader = new BufferedReader(new FileReader("resourcesprog.txt"));

String text = null;

while ((text = reader.readLine()) != null)

{ contents.append(text)

.append(System.getProperty(

"line.separator"));}

} catch (FileNotFoundException e1)

{ e1.printStackTrace();

} catch (IOException e1)

{e1.printStackTrace();

} finally

{ try

{

if (reader != null)

{

reader.close();}

} catch (IOException e1)

{

e1.printStackTrace();}}

ta.setText(contents.toString());

ta.setEditable(false);

3.5 Інструкція користувачу

Для запуску програми потрібно скопіювати папку проекту на локальний компютером з усіма ресурсами і запустити PDP.jar після цього ми побачимо меню програми (Мал 3.1).

Мал. 3.1 Вікно головного меню

Для запуску пробного тесту зайдіть в Білети і виберіть пункт Тестові білети (Мал 3.2)

Мал 3.2. Вікно «Теоретичні білети»

Екземенаційні білети (Мал.3.3)

Мал 3.3. Вікно «Екземенаційні білети»

Після проходження білетів вибиває результат позитивний (Мал 3.4) і негативний (Мал 3.4)

Мал 3.4. Вікно результату «позитивного»

Мал 3.5. Вікно результату «негативного»

Вікно з правилами проїзду дорожніх перехресть запускається з вкладки меню «теорія» (Мал 3.6 - 3.8)

Мал 3.6. Вікно «Загальна теорія»

Мал 3.6. Вікно «Регульовані перехрестя»

Мал 3.6. Вікно «Не регульовані перехрестя»

3.6 Результати тестування

Параметри компютера на якому проводилося тестування розробленої програми такі:

Процесор

Intel(R) Core(TM) i5-3317U @ 1.70Hz (2CPUs)

Материнська плата

Asus P5 VM

Оперативна память

6.00 Gb

Вінчестер

500GB AHD710-1TU3-CBK

Програмне забезпечення

 MyEclipse Blue

Windows version

Microsoft Windows 7 Маклимальний Service Pack 1

Програмне забезпечення, яке необхідне для роботи розробленої програми:

Операційна система - Windows XP ServicePack 1;

Встановлена Java платформа та програма MyEclipse.

Програма займає 7,69 МБвільного простору на диску.

Висновок

Дана програма призначена для вивчення правил проїзду дорожніх перехресть.

Реалізація програми була здійснена на мові програмування Java середовищі розробки Myeclipse.

При розробці даної програми получив досвід у розробці програм з тестуванням.

навчальна програма дорожній алгоритм

Список використаної літератури

Герберт Шилдт, Джеймс Холмс Искусство программирования на JAVA. - К.: Издательский дом «Вильямс», 2005.

Девид Фленаган Java у прикладах. Довідник

Торський П.О. ТЕХНОЛОГІЯ ПРОГРАМУВАННЯ ТА СТВОРЕННЯ ПРОГРАМНИХ ПРОДУКТІВ

Ноутон, Г. Шилдт Java 2. Наиболее полное руководство

Х.М. Дейтел, П.Дж. Дейтел, С.И. Сантри Технологии программированина Java 2. Книга 1. Графика, изд. М., «Бином-Пресс», 2003.

Х.М. Дейтел, П.Дж. Дейтел, С.И. Сантри Технологии программирования на Java 2. Книга 2. Распределенные приложения изд. М., «Бином-Пресс», 2003.

http://javaland.com.ua/vykorystannya-java/mova-i-arxitektura-java/11/

http://uk.wikipedia.org/wiki/Java

Файл menu.java:

package test;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

public class menu {

JFrame f=new JFrame("Проїзд дорожніх перехресть");

JMenuBar mBar=new JMenuBar();

JMenu fmenu=new JMenu("Білети");

JMenu tmenu=new JMenu("Теорія");

JMenu help=new JMenu("Справка");

Font font = new Font("Verdana", Font.BOLD, 12);

JLabel l=new JLabel();

ImageIcon icon1 = new ImageIcon("images//p1.jpg");

public menu(){

JMenuItem txtFileItem = new JMenuItem("Тестові білети");

txtFileItem.setFont(font);

fmenu.add(txtFileItem);

txtFileItem.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent arg0) {

new test1();

}});

JMenuItem imgFileItem = new JMenuItem("Екземенаційні білети");

imgFileItem.setFont(font);

fmenu.add(imgFileItem);

imgFileItem.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {

newexamen();}});

JMenuItem exitItem = new JMenuItem("Вихід");

exitItem.setFont(font);

exitItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.exit(0);}});

JMenuItem zteoria = new JMenuItem("Загальна теорія");

zteoria.setFont(font);

tmenu.add(zteoria);

zteoria.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

new zteoria();}});

JMenuItem reg= new JMenuItem("Регульовані перехрестя");

reg.setFont(font);

tmenu.add(reg);

reg.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent arg0) {

new reg();

}});

JMenuItem nereg = new JMenuItem("Нерегульовані перехрестя");

nereg.setFont(font);

tmenu.add(nereg);

nereg.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

new nereg();}});

JMenuItem tit = new JMenuItem("Титулка");

tit.setFont(font);

help.add(tit);

tit.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

new titulka();}});

JMenuItem prog = new JMenuItem("Про програму");

prog.setFont(font);

help.add(prog);

prog.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {

new prog();

}});

f.getContentPane().setLayout(null);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.pack();

f.setLocationByPlatform(true);

mBar.setBounds(1, 1, 640, 20);

l.setBounds(20, 40, 600, 300);

f.add(mBar);

l.setIcon(icon1);

mBar.add(fmenu);

mBar.add(tmenu);

mBar.add(help);

mBar.add(exitItem);

f.setResizable(false);

f.add(l);

f.setSize(550,390);

f.setLocationRelativeTo(null);

f.setVisible(true);

}

public static void main(String[] args) {

new menu();

}

}

Файл test1.java:

package test;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

public class test1 {

JFrame f=new JFrame("Теоретичні білети");

JPanel p= new JPanel();

JPanel p1= new JPanel();

JPanel p2= new JPanel();

Font tnr40=new Font("Times New Roman",Font.BOLD,50);

Font tnr72=new Font("Times New Roman",Font.BOLD,310);

Color Red = new Color(255, 0, 0);

Color Green = new Color(0, 255, 0);

JLabel l = new JLabel("");

JLabel l0 = new JLabel("В якому порядку проїдуть перхрестя транспортні засоби?");

JLabel l1 = new JLabel("Ваша оцінка:");

JLabel l2 = new JLabel("");

ButtonGroup bg0 = new ButtonGroup();

ButtonGroup bg1 = new ButtonGroup();

ButtonGroup bg2 = new ButtonGroup();

ButtonGroup bg3 = new ButtonGroup();

ButtonGroup bg4 = new ButtonGroup();

ButtonGroup bg5 = new ButtonGroup();

ButtonGroup bg6 = new ButtonGroup();

ButtonGroup bg7 = new ButtonGroup();

ButtonGroup bg8 = new ButtonGroup();

ButtonGroup bg9 = new ButtonGroup();

JRadioButton b01= new JRadioButton("Червоний, синій, жовтий, зелений;");

JRadioButton b02= new JRadioButton("Жовтий, зелений, червоний, синій;");

JRadioButton b03= new JRadioButton("Червоний, зелений, синій, жовтий.");

JRadioButton b11= new JRadioButton("Жовтий виїде на перехрестя і зупиниться шоб дати дорогу");

JLabel lb11=new JLabel(" зеленому; зелений, синій, червоний, жовтий.");

JRadioButton b12= new JRadioButton("Жовтий, зелений, червоний, синій.");

JRadioButton b13= new JRadioButton("зелений, синій, червоний, жовтий.");

JRadioButton b21= new JRadioButton("Водій мотоцикла;");

JRadioButton b22= new JRadioButton("Водій вантажного автомобіля.");

JRadioButton b31= new JRadioButton("Синій автомобіль;");

JRadioButton b32= new JRadioButton("Зелений автомобіль;");

JRadioButton b33= new JRadioButton("Червоний автомобіль;");

JRadioButton b34= new JRadioButton("Жовтий автомобіль.");

JRadioButton b41= new JRadioButton("Мотоцикл, автомобіль, трамвай;");

JRadioButton b42= new JRadioButton("Трамвай, автомобіль, мотоцикл;");

JRadioButton b43= new JRadioButton("Трамвай, мотоцикл, автомобіль.");

JRadioButton b51= new JRadioButton("Синій автомобіль;");

JRadioButton b52= new JRadioButton("Зелений автомобіль;");

JRadioButton b53= new JRadioButton("Червоний автомобіль.");

JRadioButton b61= new JRadioButton("Водій автобуса;");

JRadioButton b62= new JRadioButton("Водій Мотоцикла.");

JRadioButton b71= new JRadioButton("Трамвай, автобус, легковий автомобіль;");

JRadioButton b72= new JRadioButton("Автобус, легковий автомобіль, трамвай;");

JRadioButton b73= new JRadioButton("Легковий автомобіль, трамвай, автобус.");

JRadioButton b81= new JRadioButton("Трамваю і мотоциклу;");

JRadioButton b82= new JRadioButton("Автомобілю і мотоциклу;");

JRadioButton b83= new JRadioButton("Всісм транспортним засобам;");

JRadioButton b84= new JRadioButton("Трамваю, вантажному автомобілю і мотоциклу.");

JRadioButton b91= new JRadioButton("Поступився дорогою мотоциклу і розвернувся на перехресті;");

JRadioButton b92= new JRadioButton("Поступився дорогою трамваю і розвернувся на перехресті;");

JRadioButton b93= new JRadioButton("Поступився дорогою трамваю, мотоциклу і розвернувся на перехресті;");

JButton button00 = new JButton("Перевірити");

JButton button20 = new JButton("Продовжити");

JButton button21 = new JButton("Завершити");

ImageIcon icon1 = new ImageIcon("imagesp01.jpg");

ImageIcon icon2 = new ImageIcon("imagesp02.jpg");

ImageIcon icon3 = new ImageIcon("imagesp03.jpg");

ImageIcon icon4 = new ImageIcon("imagesp04.jpg");

ImageIcon icon5 = new ImageIcon("imagesp05.jpg");

ImageIcon icon6 = new ImageIcon("imagesp06.jpg");

ImageIcon icon7 = new ImageIcon("imagesp07.jpg");

ImageIcon icon8 = new ImageIcon("imagesp08.jpg");

ImageIcon icon9 = new ImageIcon("imagesp09.jpg");

ImageIcon icon10 = new ImageIcon("imagesp10.jpg");

Integer res=0,s=0;

Integer k=10;

public test1(){

l.setIcon(icon1);

bg0.add(b01);bg0.add(b02);bg0.add(b03);

bg1.add(b11);bg1.add(b12);bg1.add(b13);

bg2.add(b21);bg2.add(b22);

bg3.add(b31);bg3.add(b32);bg3.add(b33);bg3.add(b34);

bg4.add(b41);bg4.add(b42);bg4.add(b43);

bg5.add(b51);bg5.add(b52);bg5.add(b53);

bg6.add(b61);bg6.add(b62);

bg7.add(b71);bg7.add(b72);bg7.add(b73);

bg8.add(b81);bg8.add(b82);bg8.add(b83);bg5.add(b84);

bg9.add(b91);bg9.add(b92);bg9.add(b93);

b01.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b02.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b03.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b11.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;}});

b12.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b13.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b21.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b22.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b31.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b32.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b33.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b34.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=4;}});

b41.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b42.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b43.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b51.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;}});

b52.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b53.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b61.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b62.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b71.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b72.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b73.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b81.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b82.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b83.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b84.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=4;}});

b91.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b92.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b93.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

//l1.setVisible(false);

p2.setVisible(false);

b11.setVisible(false);

lb11.setVisible(false);

b12.setVisible(false);

b13.setVisible(false);

b21.setVisible(false);

b22.setVisible(false);

b31.setVisible(false);

b32.setVisible(false);

b33.setVisible(false);

b34.setVisible(false);

b41.setVisible(false);

b42.setVisible(false);

b43.setVisible(false);

b51.setVisible(false);

b52.setVisible(false);

b53.setVisible(false);

b61.setVisible(false);

b62.setVisible(false);

b71.setVisible(false);

b72.setVisible(false);

b73.setVisible(false);

b81.setVisible(false);

b82.setVisible(false);

b83.setVisible(false);

b84.setVisible(false);

b91.setVisible(false);

b92.setVisible(false);

b93.setVisible(false);

button20.setEnabled(false);

button21.setFont(tnr40);

button00.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if(k==1){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);break;

case 1: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 2: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 3: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

if(k==2){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);break;

case 1: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

case 2: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 3: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 4: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

if(k==3){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);break;

case 1: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

case 2: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 3: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

if(k==4){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);break;

case 1: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

case 2: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 3: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

if(k==5){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);break;

case 1: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

case 2: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 3: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

if(k==6){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);button00.setEnabled(false);break;

case 1: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

case 2: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 3: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

if(k==7){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);break;

case 1: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

case 2: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 3: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 4: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

if(k==8){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);break;

case 1: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 2: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

if(k==9){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);break;

case 1: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 2: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 3: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

if(k==10){button20.setEnabled(true);

switch(res){

case 0: JOptionPane.showMessageDialog(f,"Виберіть відповідь!","Warning",JOptionPane.WARNING_MESSAGE);break;

case 1: s=s+1;JOptionPane.showMessageDialog(f,"Правильно:-)"+" ");button00.setEnabled(false);break;

case 2: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

case 3: JOptionPane.showMessageDialog(f,"Неправильно:-(","Error",JOptionPane.ERROR_MESSAGE);button00.setEnabled(false);break;

default:System.out.println("sdfd");

}res=0;}

}

});

button21.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {

System.exit(0);

}});

button20.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if(k==1){

p2.setVisible(true);

p.setVisible(false);

p1.setVisible(false);

if(s<8){

l1.setForeground(Red);

l2.setForeground(Red);}else{

l1.setForeground(Green);

l2.setForeground(Green);}

l1.setFont(tnr40);

l2.setFont(tnr72);

l2.setText(""+s);

}

if(k==2){k=1;button00.setEnabled(true);

button20.setEnabled(false);

l.setIcon(icon10);

l0.setText(" В якій відповіді правильно вказано дії автомобіля? ");

b81.setVisible(false);

b82.setVisible(false);

b83.setVisible(false);

b84.setVisible(false);

b91.setVisible(true);

b92.setVisible(true);

b93.setVisible(true);

JOptionPane.showMessageDialog(f,"8.7.3 "+

"Сигнали світлофора мають такі значення: "+

"б) зелений у вигляді стрілки (стрілок) на чорному фоні дозволяє рух у зазначеному напрямку (напрямках). Таке саме значення має "+

"сигнал у вигляді зеленої стрілки (стрілок) у додатковій секції світлофора. "+

"Сигнал у вигляді стрілки, що дозволяє поворот ліворуч, дозволяє й розворот, якщо він не заборонений дорожніми знаками. "+

"Сигнал у вигляді зеленої стрілки (стрілок) у додатковій (додаткових) секції, увімкнений разом із зеленим сигналом світлофора, "+

"інформує водія про те, що він має перевагу в зазначеному стрілкою (стрілками) напрямку (напрямках) руху перед транспортними "+

"засобами, що рухаються з інших напрямків; "+"Правильних відповідей: "+s);}

if(k==3){k=2;button00.setEnabled(true);

button20.setEnabled(false);

l.setIcon(icon9);

l0.setText(" Яким транспортним засобам заборонено рух?");

b81.setVisible(true);

b82.setVisible(true);

b83.setVisible(true);

b84.setVisible(true);

b71.setVisible(false);

b72.setVisible(false);

b73.setVisible(false);

JOptionPane.showMessageDialog(f,"16.12 "+

"На перехресті рівнозначних доріг водій нерейкового транспортного засобу зобовязаний дати дорогу транспортним засобам, що "+

"наближаються праворуч. "+

"Цим правилом повинні керуватися між собою і водії трамваїв. "+

"На будь-якому нерегульованому перехресті трамвай, незалежно від напрямку його подальшого руху, має перевагу перед нерейковими "+

"транспортними засобами, що наближаються до нього по рівнозначній дорозі. "+"16.13 "+

"Перед поворотом ліворуч і розворотом водій нерейкового транспортного засобу зобовязаний дати дорогу трамваю попутного напрямку, а також "+

"транспортним засобам, що рухаються по рівнозначній дорозі в зустрічному напрямку прямо чи праворуч. "+

"Цим правилом повинні керуватися між собою і водії трамваїв. "+"Правильних відповідей: "+s);}

if(k==4){k=3;button00.setEnabled(true);

button20.setEnabled(false);

l.setIcon(icon8);

l0.setText("Транспортні засоби проїдуть перехрестя в наступному порядку:");

b71.setVisible(true);

b72.setVisible(true);

b73.setVisible(true);

b61.setVisible(false);

b62.setVisible(false);

JOptionPane.showMessageDialog(f,"16.12 "+

"На перехресті рівнозначних доріг водій нерейкового транспортного засобу зобовязаний дати дорогу транспортним засобам, що "+

"наближаються праворуч. "+

"Цим правилом повинні керуватися між собою і водії трамваїв. "+

"На будь-якому нерегульованому перехресті трамвай, незалежно від напрямку його подальшого руху, має перевагу перед нерейковими "+

"транспортними засобами, що наближаються до нього по рівнозначній дорозі."+"Правильних відповідей: "+s);}

if(k==5){k=4;

button00.setEnabled(true);

button20.setEnabled(false);

l.setIcon(icon7);

l0.setText("Водій якого транспортного засобу повинен дати дорогу?");

b51.setVisible(false);

b52.setVisible(false);

b53.setVisible(false);

b61.setVisible(true);

b62.setVisible(true);

JOptionPane.showMessageDialog(f,"16.12 "+

"На перехресті рівнозначних доріг водій нерейкового транспортного засобу зобовязаний дати дорогу транспортним засобам, що "+

"наближаються праворуч. "+

"Цим правилом повинні керуватися між собою і водії трамваїв. "+

"На будь-якому нерегульованому перехресті трамвай, незалежно від напрямку його подальшого руху, має перевагу перед нерейковими "+

"транспортними засобами, що наближаються до нього по рівнозначній дорозі."+"Правильних відповідей: "+s);}

if(k==6){k=5;button00.setEnabled(true);

button20.setEnabled(false);

l.setIcon(icon6);

l0.setText(" Другим проїде перехрестя: ");

b51.setVisible(true);

b52.setVisible(true);

b53.setVisible(true);

b41.setVisible(false);

b42.setVisible(false);

b43.setVisible(false);

JOptionPane.showMessageDialog(f,"16.11 "+

"На перехресті нерівнозначних доріг водій транспортного засобу, що рухається по другорядній дорозі, повинен дати дорогу транспортним засобам, "+

"які наближаються до даного перехрещення проїзних частин по головній дорозі, незалежно від напрямку їх подальшого руху. "+

"16.12 "+

"На перехресті рівнозначних доріг водій нерейкового транспортного засобу зобовязаний дати дорогу транспортним засобам, що "+

"наближаються праворуч. "+

"Цим правилом повинні керуватися між собою і водії трамваїв. "+

"На будь-якому нерегульованому перехресті трамвай, незалежно від напрямку його подальшого руху, має перевагу перед нерейковими "+

"транспортними засобами, що наближаються до нього по рівнозначній дорозі."+"Правильних відповідей: "+s);}

if(k==7){k=6;button00.setEnabled(true);

button20.setEnabled(false);

l.setIcon(icon5);

l0.setText("Транспортні засоби проїдуть перехрестя в наступному порядку:");

b41.setVisible(true);

b42.setVisible(true);

b43.setVisible(true);

b31.setVisible(false);

b32.setVisible(false);

b33.setVisible(false);

b34.setVisible(false);

JOptionPane.showMessageDialog(f,"16.11 "+

"На перехресті нерівнозначних доріг водій транспортного засобу, що рухається по другорядній дорозі, повинен дати дорогу транспортним засобам, "+

"які наближаються до даного перехрещення проїзних частин по головній дорозі, незалежно від напрямку їх подальшого руху. "+

"16.13 "+

"Перед поворотом ліворуч і розворотом водій нерейкового транспортного засобу зобовязаний дати дорогу трамваю попутного напрямку, а також "+

"транспортним засобам, що рухаються по рівнозначній дорозі в зустрічному напрямку прямо чи праворуч. "+

"Цим правилом повинні керуватися між собою і водії трамваїв. "+"Правильних відповідей: "+s);}

if(k==8){k=7;button00.setEnabled(true);

button20.setEnabled(false);

l.setIcon(icon4);

l0.setText(" Другим проїде перехрестя: ");

b31.setVisible(true);

b32.setVisible(true);

b33.setVisible(true);

b34.setVisible(true);

b21.setVisible(false);

b22.setVisible(false);

JOptionPane.showMessageDialog(f,"16.12 "+

"На перехресті рівнозначних доріг водій нерейкового транспортного засобу зобовязаний дати дорогу транспортним засобам, що "+

"наближаються праворуч. "+

"Цим правилом повинні керуватися між собою і водії трамваїв. "+

"На будь-якому нерегульованому перехресті трамвай, незалежно від напрямку його подальшого руху, має перевагу перед нерейковими "+

"транспортними засобами, що наближаються до нього по рівнозначній дорозі."+"Правильних відповідей: "+s);}

if(k==9){

button00.setEnabled(true);

button20.setEnabled(false);

k=8;

l.setIcon(icon3);

l0.setText("Водій якого транспортного засобу повинен дати дорогу?");

b11.setVisible(false);

lb11.setVisible(false);

b12.setVisible(false);

b13.setVisible(false);

b21.setVisible(true);

b22.setVisible(true);

JOptionPane.showMessageDialog(f,"16.12 "+

"На перехресті рівнозначних доріг водій нерейкового транспортного засобу зобовязаний дати дорогу транспортним засобам, що "+

"наближаються праворуч. "+

"Цим правилом повинні керуватися між собою і водії трамваїв. "+

"На будь-якому нерегульованому перехресті трамвай, незалежно від напрямку його подальшого руху, має перевагу перед нерейковими "+

"транспортними засобами, що наближаються до нього по рівнозначній дорозі."+"Правильних відповідей: "+s);}

if(k==10){

button00.setEnabled(true);

button20.setEnabled(false);

k=9;

l.setIcon(icon2);

l0.setText("Автомобілі проїдуть перехрестя в наступному порядку:");

b01.setVisible(false);

b02.setVisible(false);

b03.setVisible(false);

b11.setVisible(true);

lb11.setVisible(true);

b12.setVisible(true);

b13.setVisible(true);

JOptionPane.showMessageDialog(f,"16.11 "+

"На перехресті нерівнозначних доріг водій транспортного засобу, що рухається по другорядній дорозі, повинен дати дорогу транспортним засобам, "+

"які наближаються до даного перехрещення проїзних частин по головній дорозі, незалежно від напрямку їх подальшого руху. "+

"16.13 "+

"Перед поворотом ліворуч і розворотом водій нерейкового транспортного засобу зобовязаний дати дорогу трамваю попутного напрямку, а також "+

"транспортним засобам, що рухаються по рівнозначній дорозі в зустрічному напрямку прямо чи праворуч. "+

"Цим правилом повинні керуватися між собою і водії трамваїв. "+"Правильних відповідей: "+s);}

}});

f.add(p);f.add(p1);f.add(p2);

p.setBounds(0,0,450, 400);

p.setLayout(new FlowLayout());

p.add(l);

p.add(l0);

p.add(b01);p.add(b02);p.add(b03);

p.add(b11);p.add(lb11);p.add(b12);p.add(b13);

p.add(b21);p.add(b22);

p.add(b31);p.add(b32);p.add(b33);p.add(b34);

p.add(b41);p.add(b42);p.add(b43);

p.add(b51);p.add(b52);p.add(b53);

p.add(b61);p.add(b62);

p.add(b71);p.add(b72);p.add(b73);

p.add(b81);p.add(b82);p.add(b83);p.add(b84);

p.add(b91);p.add(b92);p.add(b93);

p1.setBounds(0,400,450, 280);

p1.setLayout(new FlowLayout());

p1.add(button00);

p1.add(button20);

p2.setLayout(new FlowLayout());

p2.setBounds(0, 0, 455, 500);

p2.add(l1);p2.add(l2);

p2.add(button21);

f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

f.setResizable(false);

f.setSize(455,530);

f.setLocationRelativeTo(null);

f.setVisible(true);

}

public static void main(String[] args) {

new test1();

}}

Файл examen.java:

package test;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

public class examen {

JFrame f=new JFrame("Екеменаційні білети");

JPanel p= new JPanel();

JPanel p1= new JPanel();

JPanel p2= new JPanel();

Font tnr40=new Font("Times New Roman",Font.BOLD,50);

Font tnr72=new Font("Times New Roman",Font.BOLD,310);

Color Red = new Color(255, 0, 0);

Color Green = new Color(0, 255, 0);

JLabel l = new JLabel("");

JLabel l0 = new JLabel("В якому порядку проїдуть перхрестя транспортні засоби?");

JLabel l1 = new JLabel("Ваша оцінка:");

JLabel l2 = new JLabel("");

ButtonGroup bg0 = new ButtonGroup();

ButtonGroup bg1 = new ButtonGroup();

ButtonGroup bg2 = new ButtonGroup();

ButtonGroup bg3 = new ButtonGroup();

ButtonGroup bg4 = new ButtonGroup();

ButtonGroup bg5 = new ButtonGroup();

ButtonGroup bg6 = new ButtonGroup();

ButtonGroup bg7 = new ButtonGroup();

ButtonGroup bg8 = new ButtonGroup();

ButtonGroup bg9 = new ButtonGroup();

JRadioButton b01= new JRadioButton("Червоний, синій, жовтий, зелений;");

JRadioButton b02= new JRadioButton("Жовтий, зелений, червоний, синій;");

JRadioButton b03= new JRadioButton("Червоний, зелений, синій, жовтий.");

JRadioButton b11= new JRadioButton("Жовтий виїде на перехрестя і зепиниться шоб дати дорогу");

JLabel lb11=new JLabel(" зеленому; зелений, синій, червоний, жовтий.");

JRadioButton b12= new JRadioButton("Жовтий, зелений, червоний, синій.");

JRadioButton b13= new JRadioButton("зелений, синій, червоний, жовтий.");

JRadioButton b21= new JRadioButton("Водій мотоцикла;");

JRadioButton b22= new JRadioButton("Водій вантажного автомобіля.");

JRadioButton b31= new JRadioButton("Синій автомобіль;");

JRadioButton b32= new JRadioButton("Зелений автомобіль;");

JRadioButton b33= new JRadioButton("Червоний автомобіль;");

JRadioButton b34= new JRadioButton("Жовтий автомобіль.");

JRadioButton b41= new JRadioButton("Мотоцикл, автомобіль, трамвай;");

JRadioButton b42= new JRadioButton("Трамвай, автомобіль, мотоцикл;");

JRadioButton b43= new JRadioButton("Трамвай, мотоцикл, автомобіль.");

JRadioButton b51= new JRadioButton("Синій автомобіль;");

JRadioButton b52= new JRadioButton("Зелений автомобіль;");

JRadioButton b53= new JRadioButton("Червоний автомобіль.");

JRadioButton b61= new JRadioButton("Водій автобуса;");

JRadioButton b62= new JRadioButton("Водій Мотоцикла.");

JRadioButton b71= new JRadioButton("Трамвай, автобус, легковий автомобіль;");

JRadioButton b72= new JRadioButton("Автобус, легковий автомобіль, трамвай;");

JRadioButton b73= new JRadioButton("Легковий автомобіль, трамвай, автобус.");

JRadioButton b81= new JRadioButton("Трамваю і мотоциклу;");

JRadioButton b82= new JRadioButton("Автомобілю і мотоциклу;");

JRadioButton b83= new JRadioButton("Всісм транспортним засобам;");

JRadioButton b84= new JRadioButton("Трамваю, вантажному автомобілю і мотоциклу.");

JRadioButton b91= new JRadioButton("Поступився дорогою мотоциклу і розвернувся на перехресті;");

JRadioButton b92= new JRadioButton("Поступився дорогою трамваю і розвернувся на перехресті;");

JRadioButton b93= new JRadioButton("Поступився дорогою трамваю, мотоциклу і розвернувся на перехресті;");

JButton button20 = new JButton("Продовжити");

JButton button21 = new JButton("Завершити");

ImageIcon icon1 = new ImageIcon("imagesp01.jpg");

ImageIcon icon2 = new ImageIcon("imagesp02.jpg");

ImageIcon icon3 = new ImageIcon("imagesp03.jpg");

ImageIcon icon4 = new ImageIcon("imagesp04.jpg");

ImageIcon icon5 = new ImageIcon("imagesp05.jpg");

ImageIcon icon6 = new ImageIcon("imagesp06.jpg");

ImageIcon icon7 = new ImageIcon("imagesp07.jpg");

ImageIcon icon8 = new ImageIcon("imagesp08.jpg");

ImageIcon icon9 = new ImageIcon("imagesp09.jpg");

ImageIcon icon10 = new ImageIcon("imagesp10.jpg");

Integer res=0,s=0;

Integer k=10;

public examen(){

l.setIcon(icon1);

bg0.add(b01);bg0.add(b02);bg0.add(b03);

bg1.add(b11);bg1.add(b12);bg1.add(b13);

bg2.add(b21);bg2.add(b22);

bg3.add(b31);bg3.add(b32);bg3.add(b33);bg3.add(b34);

bg4.add(b41);bg4.add(b42);bg4.add(b43);

bg5.add(b51);bg5.add(b52);bg5.add(b53);

bg6.add(b61);bg6.add(b62);

bg7.add(b71);bg7.add(b72);bg7.add(b73);

bg8.add(b81);bg8.add(b82);bg8.add(b83);bg5.add(b84);

bg9.add(b91);bg9.add(b92);bg9.add(b93);

b01.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b02.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b03.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b11.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;}});

b12.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b13.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b21.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b22.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b31.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b32.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b33.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b34.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=4;}});

b41.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b42.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b43.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b51.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;}});

b52.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b53.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b61.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b62.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b71.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b72.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b73.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b81.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b82.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b83.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

b84.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=4;}});

b91.addItemListener(new ItemListener(){

@Override

public void itemStateChanged(ItemEvent e) {

res=1;

}});

b92.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=2;}});

b93.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

res=3;}});

p2.setVisible(false);

b11.setVisible(false);

lb11.setVisible(false);

b12.setVisible(false);

b13.setVisible(false);

b21.setVisible(false);

b22.setVisible(false);

b31.setVisible(false);

b32.setVisible(false);

b33.setVisible(false);

b34.setVisible(false);

b41.setVisible(false);

b42.setVisible(false);

b43.setVisible(false);

b51.setVisible(false);

Делись добром ;)