Визуальные средства разработки программных приложений. Использование апплетов. Работа с коллекциями Java

Страницы работы

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ

РУСПУБЛИКИ БЕЛАРУСЬ

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ ИМЕНИ П.О.СУХОГО

Факультет автоматизированных информационных систем

Кафедра информационные технологии

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №5

по дисциплине: «Визуальные средства разработки программных приложений»

Выполнил: студент гр.ИТ-32

Принял: преподаватель

Гомель 2014

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

Использование апплетов

Цель: научиться работе с коллекциями Java.

Задание: Создать классы Point и Line. Объявить массив из n объектов класса Point. Для объекта класса Line определить, какие из объектов Point лежат на одной стороне от прямой линии и какие на другой. Реализовать ввод данных для объекта Line и случайное задание данных для объекта Point.Результаты выполнения:

Рисунок 1 – Выполнение программы

Листинг программы:

Applet

package lab5;

import java.applet.Applet;

import java.applet.*;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Event;

import java.awt.Graphics;

import java.util.ArrayList;

/**

*

* @author Yasonov Vladimir

*/

public class Appl extends Applet {

public Appl()  {

super();

this.resize(5000, 5000);

dimAppWndDimension = this.getSize();

repaint();

}

double x1,y1,x2,y2;

Line line;//линия-разделитель

int j=0;

String msg = "";

boolean horizontal=false;//если линия параллельна оси х

boolean vertical=false;//если параллельна оси у

int mouseX =0, mouseY = 0;//координата мыши по х

boolean keypress=false;//координата мыши по у

Dimension dimAppWndDimension;//размер окна

ArrayList<Point> points=new ArrayList<Point> ();//список точек

public void paint(Graphics g) //функция отрисовки

{

//g.setColor(Color.BLACK);//задать цвет черный

g.setColor(Color.white);//цвет линии белый

g.fillRect(0, 0, dimAppWndDimension.width, dimAppWndDimension.height);//перекрасить фон в черный цвет

if(j>1)

{

if(horizontal)//если линия горизонтальная

{

//g.setColor(Color.white);//цвет линии белый

g.setColor(Color.BLACK);

g.drawLine(0, (int)y2, 5000, (int)y2);//рисуем линию

for(int i=0;i<points.size();i++)//просмотр списка точек

{

if(y1>points.get(i).getY())//если точка ниже линии

g.setColor(Color.RED);//в красный цвет

else

g.setColor(Color.GREEN);//в зеленый цвет

g.fillOval((int)points.get(i).getX(), (int)points.get(i).getY(), 5, 5);//отрисовываем точку

}

}

else

if(vertical)//если линия горизонтальная

{

g.setColor(Color.BLACK);//цвет линии белый

g.drawLine((int)x1, 0, (int)x2, 5000);//рисуем вертикальную линию

for(int i=0;i<points.size();i++)//просмотр списка точек

{

if(x1>points.get(i).getX())//если точка слева от линии

g.setColor(Color.RED);//в красный цвет

else

g.setColor(Color.GREEN);//в зеленый цвет

g.fillOval((int)points.get(i).getX(), (int)points.get(i).getY(), 5, 5);//отрисовываем точку

}

}

else//если линия произвольного наклона

{

g.setColor(Color.BLACK);//цвет линии белый

//рисуем линию

g.drawLine(0, (int)line.getCoefB(), dimAppWndDimension.width, (int)(line.getCoefK()*dimAppWndDimension.width+line.getCoefB()));

for(int i=0;i<points.size();i++)//просмотр списка точек

{

if((line.getCoefK()*points.get(i).getX()+line.getCoefB())>points.get(i).getY())//если с одной стороны от линии

g.setColor(Color.RED);//красный цвет точки

else

g.setColor(Color.GREEN);//зеленый цвет точки

g.fillOval((int)points.get(i).getX(), (int)points.get(i).getY(), 5, 5);//нарисовать точку

}

}

}

else

{

g.setColor(Color.BLACK);

for(Point p:points)

g.fillOval((int)p.getX(), (int)p.getY(), 5, 5);

}

}

public boolean mouseDown(Event evtObj, int x,int y) //событие нажатия кнопки

{

if(!keypress)//если L не нажата, то ставим точку

{

points.add(new Point(x,y));//добавить точку в список

}

else//прорисовываем линию

{

if(j==0)//первая точка линии

{

x1=x;

y1=y;

points.add(new Point(x,y));

}

if(j==1)//вторая точка линии

{

x2=x;

y2=y;

//points.add(new Point(x,y));

if(x1-x2==0){//линия верикальна, т.к. х-ы одинаковы

vertical=true;

}

else{

if(y1-y2==0)//линия горизонтальна

horizontal=true;

else

line=new Line((y1-y2)/(x1-x2),y1-(y1-y2)*x1/(x1-x2));//1-й аргумент - к, 2-й аргумент b

}

}

j++;

}

dimAppWndDimension = this.getSize();//получить размер окна

repaint();

return true;

}

public boolean keyDown(Event e, int k)//обработка события нажатия клавиши

{

if(k==108)//если нажата клавиша L перестаем считывать точкии переключаем флаг на линию

{

keypress=true;

}

repaint();

return true;

}

}

Класс point

package lab5;

public class Point {

public Point() {//конструктор без параметров

super();//конструктор базового класса

}

public Point(double x, double y) {//конструктор с параметрами (координаты точки х и у)

super();//конструктор базового класса

this.x = x;//инициализация составляющей координаты х

this.y = y;//инициализация составляющей координаты у

}

private double x;//составляющая координаты х

private double y;//составляющая координаты у

public double getY() {//получить у точки

return y;

}

public void setY(double y) {//задать у точки

this.y = y;

}

public double getX() {//получить х точки

return x;

}

public void setX(double x) {//задать х точки

this.x = x;

}

}

Класс Line

package lab5;

public class Line {

private double coefK;

public Line(double coefK, double coefB)

{//y=k*x+b

super();

this.coefK = coefK;

this.coefB = coefB;

}

private double coefB;

public double getCoefB()

{        

return coefB;

}

public void setCoefB(double coefB)

{

this.coefB = coefB;

}

public double getCoefK()

{

return coefK;

}

public void setCoefK(double coefK)

{

this.coefK = coefK;

}

}

Вывод: В ходе данной работы были получены навык работы с использованием апплетов

Похожие материалы

Информация о работе