Компонент Canvas Програмування, уроки та приклади

Programm.ws - це сайт, на якому ви можете почитати літературу з мов програмування, а також подивитися приклади працюючих програм на С++, асемблері, паскалі і багато іншого.

Програмування - у звичайному розумінні, це процес створення комп'ютерних програм. У вузькому значенні (так зване кодування) під програмуванням розуміється написання інструкцій - програм - конкретною мовою програмування (часто за вже наявним алгоритмом - планом, методом вирішення поставленого завдання). Відповідно, люди, які цим займаються, називаються програмістами (на професійному жаргоні – кодерами), а ті, хто розробляє алгоритми – алгоритмістами, фахівцями предметної галузі, математиками. У більш широкому значенні під програмуванням розуміють весь спектр діяльності, пов'язаний із створенням та підтримкою в робочому стані програм - програмного забезпечення ЕОМ. Точніший сучасний термін — «програмна інженерія» (також інакше «інженерія ПЗ»). Сюди входять аналіз та постановка задачі, проектування програми, побудова алгоритмів, розробка структур даних, написання текстів програм, налагодження та тестування програми (випробування програми), документування, налаштування (конфігурування), доопрацювання та супровід.

Розділ 10. Основні компоненти

Компоненти Canvas

Компонент canvas – це порожній компонент. Клас canvas дуже простий - в ньому тільки конструктор за замовчуванням Canvas і порожня реалізація методу paint (Graphics g).

Щоб створити свій "важкий" компонент, необхідно розширити клас canvas, доповнивши його потрібними полями та методами, і при необхідності перевизначити метод paint().

Наприклад, як ви помітили, на стандартній кнопці Button можна написати лише один текстовий рядок.Не можна написати кілька рядків або відобразити малюнок на кнопці. Створимо свій "важкий" компонент - кнопку з малюнком.

У лістингу 10.7 кнопка з малюнком клас FiowerButton. Малюнок задається методом drawFiower(), а малюється методом paint(). Метод paint (), крім того, креслить по краях кнопки внизу і праворуч відрізки прямих, що зображують тінь, що відкидається опуклою кнопкою. При натисканні кнопки миші на компоненті такі ж відрізки кресляться вгорі та зліва – кнопка "вдавилася". При цьому малюнок зсувається на два пікселі вправо вниз - він "вдавлюється" у площину вікна.

Крім цього, у класі FiowerButton задана реакція на натискання та відпускання кнопки миші. Це ми обговоримо вглаві 12,а поки що скажемо, що при кожному натисканні та відпусканні кнопки змінюється значення поля isDown і кнопка перекреслюється методом repaint(). Це досягається виконанням методів mousePressed() і mouseReleased().

Для порівняння поруч розміщена стандартна кнопка типу Button того ж розміру. Мал. 10.7 показує вигляд цих кнопок.

Листинг 10.7.Кнопка з малюнком

import j ava.awt.*;

import j ava.awt.event.*;

class FiowerButton extends Canvas implements MouseListener

private boolean isDown=false;

public void drawFlower(Graphics g, int x, int y, int w, int h)

g.drawOvalfx + 2*w/5 - 6, y, w/5, w/5);

g.drawLine(x + w/2 - 6, + w/5, x + w/2 - 6, у + h - 4);

g.drawOvalfx + 3*w/10 -6, + h/3 - 4, w/5, w/5) ;

g.drawOval(x + w/2 - б, + h/3 - 4, w/5, w/5); >

public void paint(Graphics g)

int w = getSizeO.w >

g.drawLine(0, 0, w - 1, 0);

g.drawLined, 1, w - I, I);

g.drawLine(0, 0, 0, h - 1);

g.drawUne (1, 1, 1, h - 1);

drawFlower(g, 8,10 w, h);

g.drawLine(0, h - 2, w - 2, h - 2);

g.drawLined, h - 1, w - I, h - I);

g.drawLinefw - 2, h - 2, w - 2, 0);

g.drawLinefw - 1, h - 1, w - 1, 1);

drawFlower (g, 6, 8, w, h); > >

public void mousePressed(MouseEvent e)

public void mouseReleased(MouseEvent e)

public void mouseEntered(MouseEvent e)<>

public void mouseExited(MouseEvent e) <>

public void mouseClicked(MouseEvent e)

class DrawButton extends Frame

Button b = New Button ("OK");

b.setBounds(200, 50, 100, 60); add(b);

FlowerButton d = New FlowerButton();

d.setBounds(50, 50, 100, 60); add(d);

public static void main(String[] args)

Frame f = new DrawButton ("Кнопка з малюнком");