Перейти к содержимому

Фото
- - - - -

Обход по коллекции


  • Вы не можете создать новую тему
  • Please log in to reply
18 ответов в этой теме

#1 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 06 марта 2007 - 13:24

Проблемма: имеется коллекция свободных векторов. Класс вектор содержит начальную и конечную точки вектора. Как в таком случае (имея н векторов) вывести их на экран?

Класс векторов:
public class FreeVector extends Canvas {
	private static final long serialVersionUID = 1L;
	Point start;
	Point end;
	public FreeVector(int startX, int startY, int endX, int endY) {
		System.out.println(startX+" "+startY+" "+endX+" "+endY);
		start.setLocation(startX, startY);
		end.setLocation(endX, endY);
	}
	public void drawVector(Graphics g) {
		g.drawLine((int)start.getX(),(int) start.getY(),(int) end.getX(),(int) end.getY());
	}
	
	public Point getEnd() {
		return end;
	}
	
	public Point getStart() {
		return start;
	}

Класс, рисующий вектора, в зависимости от стиля рисования:
public class Shape extends Canvas {
	private static final int STAR = 1;
	private static final int BROKEN_LINE = 2;
	private static final int DEFAULT = 3;
	private int index = 0;
	Collection<FreeVector> vectors = new ArrayList<FreeVector>();
	private int coordinateX = 0;
	private int coordinateY = 0;
	public Shape() {
		setBackground(new Color(200, 200, 200)); 
	}
	public void paint(Graphics g) {
		if(index == STAR) {
			g.drawLine(coordinateX, coordinateY, 23, 44);
			System.out.println("???");
			for (FreeVector vector : vectors) {
				System.out.println("!!!");
				Point startPoint = vector.getStart();
				Point endPoint =  vector.getEnd();
				System.out.println(startPoint.getX()+" "+startPoint.getY());				g.drawLine((int)startPoint.getX(),(int) startPoint.getY(),(int) endPoint.getX(),(int)endPoint.getY());
						 }
							   }		
	}
	public final void drawShape(int styleIndex, int nodeX, int nodeY) {
		this.index = styleIndex;
		this.coordinateX = nodeX;
		this.coordinateY = nodeY;
		
	}
}

У меня даже в цикл не входит

А вектора заполняются так:
addVectorButton.addActionListener(new ActionListener(){
				private int startX = 0;
				private int startY = 0;
				private int endX = 0;
				private int endY = 0;
				public void actionPerformed(ActionEvent event) {
						try {
							startX = Integer.parseInt(vectorStartCoordinateX.getText().toString());
							startY = Integer.parseInt(vectorStartCoordinateY.getText().toString());
							endX = Integer.parseInt(vectorEndCoordinateX.getText().toString());
							endY = Integer.parseInt(vectorEndCoordinateY.getText().toString());
					new FreeVector(startX,startY,endX,endY);
					} catch(Exception e) {
							  JOptionPane.showMessageDialog(null,"Inserted coordinates are not integers!","Error!",JOptionPane.WARNING_MESSAGE);
							return;
						}
					
				}
			});


  • 0

#2 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 06 марта 2007 - 15:03

вчера не смог отписать, ушел обедать :)

по сабжу -

ты в коллекцию не пихаешь вектор, ты его только создаешь

PS если ты делаешь домашку с куюндид, а ты по всей видимости ее делаешь, то ты ее делаешь неправильно. Вектор должен наследоваться от другого компонента ;)

ЗЫ перечитал код - у тебя серьезные пробелы в понимании задания. Как заметишь меня в онлайн - стучись, помогу

Сообщение изменено: Fors (06 марта 2007 - 15:06 )

  • 0

#3 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 06 марта 2007 - 16:43

к вечеру могу выложить свою... помницца делал класс Point, потом Line, где есть начальная точнка и конечная. А прорисовку в самом конце.

Зачем этим классам экстендить канвасы?
  • 0

#4 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 06 марта 2007 - 17:26

да хз...как тогда вектор рисовать...???
  • 0

#5 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 06 марта 2007 - 18:55

Пример моей проги Прикрепленный файл  JOOP4.rar   3,58К   48 Количество загрузок
  • 0

#6 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 06 марта 2007 - 19:04

мда....я себе это не так представлял. :(
  • 0

#7 shb

shb

    New life, much more options

  • Постоялец
  • 5 253 сообщений
  • Откуда:Таллинн

Отправлено 06 марта 2007 - 19:27

Я тоже три раза носил пока понял что от меня хотят :)) Я вектор так и задавал двумя точками с координатами, а не длиной Х и У.

Пока он мне не нарисовал как задать вектор я не сделал. Муторно :)
  • 0
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен

Joga Bonito!

#8 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 06 марта 2007 - 19:38

Хехе, а что за название переменной - algusPunkt._y ? это по какой конвенции???))))

и еще, там вроде нужно менять количество векторов в ходе программы и сохранять в массив, а у тебя возможности менять кол-во векторов или я опять не так понял, что делать надо?
  • 0

#9 shb

shb

    New life, much more options

  • Постоялец
  • 5 253 сообщений
  • Откуда:Таллинн

Отправлено 06 марта 2007 - 19:51

OzzY, чисто теоретически должна быть возможность менять. Чтобы логика дизайн не ломался при этом. Но сейчас - не над
  • 0
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен

Joga Bonito!

#10 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 06 марта 2007 - 19:55

OzzY, это без конвенции. По хорошему по стандарту Джава Бинс надо геттеры и сеттеры использовать. Но когда я это все писал этих примудростей не знал. А то что с андерскора начинается - так часто обозначают глобальную переменную

а насчет этого массива вроде в прошлом году не было, во всяком случае претензий от каллика не было
  • 0

#11 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 06 марта 2007 - 23:34

Вот пример ПРАВИЛЬНОЙ проги :)

Прикрепленные файлы

  • Прикрепленный файл  kujundid_1_.rar   4,28К   18 Количество загрузок

  • 0

#12 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 11 марта 2007 - 13:04

7 скачиваний и ни одного спасибо?

Сообщение изменено: Fors (11 марта 2007 - 13:04 )

  • 0

#13 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 11 марта 2007 - 13:18

Fors, я скачал и сравнил с моим сорсом. Спасибо тебе, Fors, за предоставленную уникальную возможность:P
  • 0

#14 shb

shb

    New life, much more options

  • Постоялец
  • 5 253 сообщений
  • Откуда:Таллинн

Отправлено 12 марта 2007 - 08:33

Я тоже скачал :) Не знаю зачем :) Люблю в чужой код заглядывать
  • 0
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен

Joga Bonito!

#15 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 12 марта 2007 - 14:41

Акей, np :)

подкинуть еще багов? у меня кода мнооого ;)

Fors, я скачал и сравнил с моим сорсом

если честно, то я свой код выложил только после прочтения твоего ;)
  • 0

#16 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 20 марта 2007 - 20:06

Fors, спасибо!!!:) только теперь сказал, потому что только сейчас получил резулт))
  • 0

#17 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 21 марта 2007 - 20:10

и каков резулт?
  • 0

#18 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 21 марта 2007 - 21:20

удовлетворительный:P
  • 0

#19 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 21 марта 2007 - 21:56

удовлетворительный

wtf? девушка осталась очень довольна прогой :) и получила заслуженную 5
  • 0