Класс векторов:
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; } } });