Лекція 9 . Створення графічного інтерфейсу

11
Лекція 9. Створення графічного інтерфейсу План лекції: 1. Основні методи створення графічних інтерфейсів 2. Бібліотека AWT (Abstract Window Toolkit) та Swing 3. Приклад створення простого вікна засобами AWT та Swing 4. Анонімні класи та елементарні прийоми обробки подій 5. Прості приклади 1

description

Лекція 9 . Створення графічного інтерфейсу. План лекції: 1. Основні методи створення графічних інтерфейсів 2. Бібліотека AWT (Abstract Window Toolkit) та Swing 3. Приклад створення простого вікна засобами AWT та Swing 4. Анонімні класи та елементарні прийоми обробки подій - PowerPoint PPT Presentation

Transcript of Лекція 9 . Створення графічного інтерфейсу

Page 1: Лекція  9 . Створення графічного інтерфейсу

Лекція 9. Створення графічного інтерфейсу

План лекції:

1. Основні методи створення графічних інтерфейсів

2. Бібліотека AWT (Abstract Window Toolkit) та Swing

3. Приклад створення простого вікна засобами AWT та Swing

4. Анонімні класи та елементарні прийоми обробки подій

5. Прості приклади

Page 2: Лекція  9 . Створення графічного інтерфейсу

► В перших версіях Java для створення елементів графічного інтерфейсу призначалась бібліотека AWT (Abstract Window Toolkit)

► Універсальність програмного коду забезпечується за рахунок того, що відображення елементів інтерфейсу виконується інструментальними засобами, призначеними для даної операційної системи (один код, але нарізних платформах він виконується у відповідності до специфіки платформи)

► Переваги такого підходу: програми працюють на любих платформах

► Головний недолік: підходить для відносно простих програм. Великі проекти (наприклад, графічні бібліотеки) в рамках цього підходу створювати важко

► На різних платформах одні й ті ж програми можуть мати різні помилки – такі програми важко тестувати

Основні методи створення графічних інтерфейсів

Page 3: Лекція  9 . Створення графічного інтерфейсу

► В 1996 році Netscape створила бібліотеку IFC (Internet Foundation Classes)

► Головна ідея: елементи інтерфейсу (кнопки, меню, поля і т.п.) відображались в пустому вікні. Особливості платформи приймались до уваги лише при виборі способу відображення вікна

► Згодом Sun і Netscape об’єднали зусилля і на основі бібліотеки IFC створили бібліотеку Swing

► Бібліотека Swing не заміняє бібліотеку AWT, а доповнює її

► В Swing використовується той самий механізм обробки подій, що і в бібліотеці AWT

Основні методи створення графічних інтерфейсів (продовження)

Page 4: Лекція  9 . Створення графічного інтерфейсу

► Вікно верхнього рівня (тобто таке, що НЕ міститься всередині ніякого іншого вікна) називається фреймом

► Для створення фрейма необхідно розширити один з базових класів (Frame з AWT або JFrame з Swing, причому клас JFrame є розширенням класу Frame)

► Зауваження: для багатьох компонентів Swing назва співпадає з назвою відповідних компонентів з AWT, але Swing-компоненти починаються з літери J

► Необхідно передбачити реакцію вікна на дії користувача – принаймні запрограмувати можливість закрити вікно. Для цього описується обробник події закриття вікна, а методом addWindowListener() добавляється відповідне посилання на обробник події

► Підключаються пакети javax.swing.* (Swing), java.awt.*, java.awt.event.* (AWT)

Створення простого вікна

Page 5: Лекція  9 . Створення графічного інтерфейсу

import javax.swing.*;

class JustAFrame extends JFrame{public JustAFrame(int a,int b){super("Просте графічне вікно"); setSize(a,b);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);} }

class MyFrame{public static void main(String args[]){JustAFrame frame=new JustAFrame(400,300);}}

Створення простого вікна – Приклад (Swing)

Page 6: Лекція  9 . Створення графічного інтерфейсу

import java.awt.*;import java.awt.event.*;class MyAdapter extends WindowAdapter{public void windowClosing(WindowEvent we){System.exit(0);}}class JustAFrame extends Frame{JustAFrame(int a,int b){super("Нове вікно"); MyAdapter adapter=new MyAdapter();setSize(a,b);setVisible(true);addWindowListener(adapter);}}class MyAWTFrame{public static void main(String args[]){JustAFrame frame=new JustAFrame(400,300);}}

Створення простого вікна – Приклад (AWT)

Запустити

Page 7: Лекція  9 . Створення графічного інтерфейсу

Крім анонімних об’єктів, в Java можуть використовуватись і анонімні класи. Це робиться у випадку, коли в програмі необхідно створити лише один об’єкт такого класу.Загальний синтаксис (приклад):ActionListener listener=new ActionListener(){ ... };

В даному випадку створюється об’єкт анонімного класу, що розширює інтерфейс ActionListener, а посилання на цей об’єкт записується в інтерфейсну змінну listener

Анонімні класи

Тип об’єктної змінної

Ім’я об’єктної змінної

Суперклас чи

інтерфейс

Код з реалізацією

методів

Page 8: Лекція  9 . Створення графічного інтерфейсу

import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.Random;class MyFrame extends JFrame{public static int count=0; MyFrame(int a,int b){count++; // кількість відкритих вікон setTitle("Вікно з кнопкою: "+count); MyPanel panel=new MyPanel(); setSize(300,200); // розмір вікна// закриття вікнаsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocation(a,b); // положення вікнаadd(panel); // добавлено панельsetVisible(true); // відображення вікна}}

Вікно з кнопкою

Page 9: Лекція  9 . Створення графічного інтерфейсу

class MyPanel extends JPanel{MyPanel(){// створення кнопкиJButton button=new JButton("Створити нове вікно");add(button); // добавлено кнопку на панельbutton.addActionListener(listener);} // реєстрація обробника// обробник для кнопкиActionListener listener=new ActionListener(){public void actionPerformed(ActionEvent event){Random rnd=new Random();// створення вікна з випадковими координатами положенняMyFrame frame=new MyFrame(rnd.nextInt(800),rnd.nextInt(500));}};}class FrameAndButton{public static void main(String args[]){// створення першого вікна MyFrame frame=new MyFrame(100,100);}}

Вікно з кнопкою (продовження)

Запустити

Page 10: Лекція  9 . Створення графічного інтерфейсу

import java.awt.*;import java.awt.event.*;import java.util.Random;class MyFrame extends Frame{public static int count=0; // кількість відкритих вікон MyFrame(int a,int b){count++; // кількість відкритих вікон setTitle("Вікно з кнопкою: "+count); setLayout(null); // відключення менеджера розміщення ел-вFont f=new Font("Arial",Font.BOLD,11); // шрифт - визначенняsetFont(f); // шрифт - встановленняButton btn=new Button("Створити нове вікно");btn.setBounds(50,100,200,30); // розміри і положення кнопкиadd(btn); // кнопку добавлено у вікноsetBounds(a,b,300,200); // положення і розмір вікна

Вікно з кнопкою - AWT

Page 11: Лекція  9 . Створення графічного інтерфейсу

addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent ve){System.exit(0);} // закриття вікна});btn.addActionListener(new ButtonPressed());setVisible(true); // відображення вікна}}class ButtonPressed implements ActionListener{private Random rnd;ButtonPressed(){rnd = new Random();}public void actionPerformed(ActionEvent ae){new MyFrame(rnd.nextInt(800),rnd.nextInt(500));}}class FrameAndButtonAWT{public static void main(String args[]){// створення першого вікна MyFrame frame=new MyFrame(100,100);}}

Вікно з кнопкою – AWT (продовження)

Запустити