русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Программа: Использование графических примитивов в java. Abstract Windows Toolkit java

Задание

Используя ранее созданные классы, разработать приложение, отражающий результаты обработки коллекции объектов в графическом виде (график функции, диаграмма и т.д.). При разработке классов использовать шаблон Factory Method (Virtual Constructor) или Observer.

Обеспечить диалоговый интерфейс с пользователем и перерисовки графика при изменении значений элементов коллекции.
Использовать комментарии для автоматической генерации документации средствами javadoc.

 

Используемые средства ООП

Abstract Windows Toolkit - набор инструментальных средств для абстрактных окон интерфейс прикладного программирования (API) Java, позволяющий разработчикам получать доступ к графическим функциям Java, например кнопкам, интерфейсным элементам (widget), окнам и так далее.

AWT поддерживает богатый ассортимент графических методов. Вся графика рисуется относительно окна. Это может быть главное окно апплета, дочернее окно апплета или окно автономного применения. Начальная точка каждого окна находится в верхнем левом углу и имеет координаты 0,0. Координаты указываются в пикселях. Весь вывод в окно выполняется в конкретном графическом контексте.

Класс Graphics определяет множество функций рисования. Любая фигура может быть нарисована только контуром или залита. Объекты рисуются и заливаются текущим выбранным цветом графики, которым по умолчанию является черный. Когда рисуется графический объект выходит за пределы окна, его вывод автоматически усекается.

AWT определяет окна согласно иерархии классов, которые добавляют функциональность и специфичность на каждом уровне. Два наиболее часто используемых типа окон наследуются или от Panel, которая используется в аплетах или от класса Frame, который создает стандартное окно приложения. Большую часть своей функциональности эти окна наследуют от своих родительских классов.

Component. На вершине иерархии находится класс Component. Component - это абстрактный класс, инкапсулирует все атрибуты визуального компонента. Все элементы пользовательского интерфейса является подклассами Component. Он определяет более сотни общедоступных методов, отвечающих за управление событиями, такими как: клавишный ввод, перемещение и изменение размеров окна, а также перерисовки. Объект Component отвечает за запоминание текущих цветов фона и переднего плана, а также текущего выбранного шрифта для печати.

Container. Класс Container - подкласс Component. Он имеет дополнительные методы, позволяющие вкладывать в него другие объекты Component. Другие объекты Container также могут находиться внутри Container (поскольку они сами являются экземплярами Component). Это позволяет строить многоуровневые системы вложенности. Контейнер отвечает за раскладку (т.е. расположения) любых компонентов, которые он содержит.

Panel. Класс Panel реализует Container. Может обеспечивать рекурсивную вложенность и является конкретным экранным компонентом. Panel - суперкласс для Applet. Когда экранный вывод направляется в апплет, он рисуется на поверхности объекта Panel. По сути, Panel - это окно, лишенное линейки заголовка, линейки меню и рамки.

Другие компоненты могут быть добавлены к объекту Panel с помощью его метода add (), унаследованного от Container.

Window. Класс Window создает окно верхнего уровня. Окно верхнего уровня не содержится внутри другого объекта, оно располагается прямо на рабочем столе. Обычно не приходится создавать объекты Window напрямую. Вместо этого используют подкласс Window - Frame.

Frame. Подкласс Window, имеющая линейку заголовка линейку меню, границы и элементы управления размером.
Canvas. Инкапсулирует пустое окно, в котором можно рисовать.

 

Иерархия и структура классов

 

Описание программы

Для реализации шаблона Observer использовались следующие классы и интерфейсы:
Viewable Window - ConcreteCreator (шаблон проектирования Factory Method); реализует метод, "фабрикующий" объекты ViewWindow.
View Window - ConcreteProduct (шаблон проектирования Factory Method);отображение графика.
Window - создание окна отображения графика.
Main - класс, реализует диалог с пользователем; содержит статический метод mainQ.

В данном примере используются примитивы AWT для отображения результатов обработки коллекции объектов в графическом виде. Согласно шаблона проектирования Factory Method разработаны классы ViewWindow и Viewable Window.
При написании исходного кода используем стиль комментариев документации javadoc.

 

Текст программы

1 Main.java

packageex07;

import ex04.Application;
/**  Обчислення і відображення
* результатів; містить реалізацію
* статичного методу main()
* @ author xone
* (Aversion 7 . О
* @ see Main#main */
public class Main {
/** Виконується при запуску програми;
* викликає метод {@linkplain Application#run(Viewable)
* @ param args параметри запуску програми */

       /**
* @ param args
*/
/**
* @ param args
*/
/**
* @ param args
*/
public static void main(String[] args){
Application app = Application.getInstance() ;
app.run();//new ViewableWindow()

System.exit(0);
}
}

 

2 ViewableWindows.java

packageex07;
importex03.Viewable;
importex02.View;

/** ConcreteCreator
*  {шаблон проектування
* Factory Method);
* реалізує метод
* " що фабрикує" об'єкти
* @ author xone
* (Aversion 1. О
* @ seeViewable
* @ see ViewablefgetView() */

public class ViewableWindow implements Viewable{
@Override
public View getView() {
return new ViewWindow();
}
}

 

3 ViewWindow.java

packageex07;
import java.awt.Dimension;
import java.awt.*;

import ex02.ViewResult;

/** ConcreteProduct
*  {шаблон проектування
* Factory Method);
* відображення графіка
* @ author xone

*   (aversion  1.0
*   @ see ViewResult
*   @ see Window
*   */

public class ViewWindow extends ViewResult {

       /** Кількість елементів коллекци */
private static final int POINTS_NUM = 100;
/** Вікно, що відображається */

private Window window = null;
/** Створення і відображення вікна */
public ViewWindow() {
super (POINTS_NUM) ;
window = new Window(this);
window.setSize(new Dimension(640, 480));
window.setTitle("Result");
window.setVisible(true);
}

@Override
public void viewShow() {
super.viewShow();
window.setVisible(true);
window.repaint();
}

}

 

4 Window.java

packageex07;

importjava.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import ex02.Item1;
import ex02.ViewResult;
/** Створення вікна
* відображення графіка
* ©author xone
* gversion 1. 0
* @ see Frame */
@ SuppressWarnings("serial")
public class Window extends Frame {
/** Товщина відступу від краю вікна */ private static final int BORDER = 20;
/** Об'єкт, що реалізовує інтерфейс {Slinkplain exO2.View};<br>
* обслуговує колекцію об'єктів {Slinkplain exOl.Item2d) */
private ViewResult view;
/** Ініціалізував {Slinkplain Window#view};<br>
* Створює обробник події закриття вікна
* Sparam view значення для поля {@linkplain Window#viewj */
public Window(ViewResult view){
this.view = view;
this.view = view;

       addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we){
setVisible(false);
}
});
}

@Override

public void paint(Graphics g){
Rectangle r = getBounds(), з = new Rectangle();
r.x += BORDER; r.y += 25 + BORDER;
r.width -= r.x + BORDER;
r.height -= r.y + BORDER;
c.x = r.x;   c.y = r.y + r.height / 2;
з.width = r.width; з.height = r.height / 2;
g.setColor (Color. LIGHT_GRAY) ;
g.setColor(Color.RED) ;
g.drawLine(c.x, c.y, c.x + з.width, c.y);
g.drawLine(c.x, r.y, c.x, r.y + r.height);

double maxX = 6, maxY = view.getY(), scaleX, scaleY;
Item1 item = null;
view.getX();


g.setColor(Color.BLUE);

g.drawOval((int)item.getX(),(int)item.getY(),10, 10);
g.drawLine(0, 0, 0, (int) item.getY());
g.drawLine(0, (int) item.getY(),(int)item.getY(), (int)item.getX());
g.drawLine((int)item.getX(), (int)item.getY(), (int)item.getX(), 0);
g.drawLine(0, (int) item.getY(), 0, 0);

}

}

 

Результат работы:

Просмотров: 12418

Вернуться воглавление




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.