Cześć, jestem nowy na forum i piszę w sprawie problemu, który mam z moim aktualnym zadaniem. Mam zrobić za pomocą AWT program w stylu painta, w którym mam przykładowo malować linie za pomocą myszki(naciskam, przeciągam, puszczam) i mamy linię. Tylko problem polega na tym, że chciałbym przy tym tworzyć element klasy Linia i dodać go do kolekcji takich elementów, a następnie na podstawie tej kolekcji nanieść wszystkie linie na ekran. Mój problem polega na tym, że nie bardzo wiem jak właśnie zrobić by program nanosił linie na podstawie elementów kolekcji. Aktualnie jak nacisnę klawisz myszy, przeciągnę ją i puszczę, to jest tworzony obiekt linia i jest sama linia namalowana, lecz nie na podstawie kolekcji. Domyślam się, że wypadałoby zrobić pętle, w której pobierałbym elementy kolekcji i je rysował, ale przyznam, że nie mam pojęcia gdzie taką pętle zamieścić i jak to technicznie rozwiązać. Poniżej zamieszczam część kodu, który napisałem.
public Zbior zbiorLinii= new Zbior();
public Point p1;
public Point p2;
private WindowListener frameList = new WindowAdapter()
{
public void windowClosing (WindowEvent ev)
{
MyFrame.this.dispose();
}
};
private MouseListener mouseList = new MouseAdapter()
{
public void mouseReleased(MouseEvent ev)
{
p2 = new Point(ev.getX(), ev.getY());
Linia l1 = new Linia(p1, p2);
zbiorLinii.add(k1);
Graphics graph = can.getGraphics();
graph.setColor(Color.RED);
graph.drawLine(l1.poczatek.x, l1.poczatek.y, l1.koniec.x, l1.koniec.y);
repaint ();
}
public void mousePressed ( MouseEvent ev )
{
p1 = new Point(ev.getX(), ev.getY());
repaint ();
}
};
private MyCanvas can = new MyCanvas();
public MyFrame ()
{
super("Paint");
setSize(800,600);
setLocation(300,100);
add(can,BorderLayout.CENTER);
can.addKeyListener(keyList);
can.addMouseListener(mouseList);
can.setFocusable(true);
can.requestFocus();
addWindowListener(frameList);
setVisible(true);
}
}