МИНИСТЕРСТВО ОБРАЗОВАНИЯ
РУСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ ИМЕНИ П.О.СУХОГО
Факультет автоматизированных информационных систем
Кафедра информационные технологии
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №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;
}
}
Вывод: В ходе данной работы были получены навык работы с использованием апплетов
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.