Вы должны где-то хранить последние местоположения.A List
- хороший выбор.Теперь, когда вы щелкаете где-то на экране, вы добавляете местоположение в список, а когда вам нужно перекрасить экран, вы рисуете все сохраненные места.Это что-то вроде разделения модели и вида ( модель - это ваш список 2D-местоположений, вид - это то, что вы рисуете на экране).
Создайте где-нибудь один список:
// public static only to keep it simple!!
public static List<Point> points = new ArrayList<Point>();
Затем (спасибо, oliholz!) Добавьте слушателя в panelR
вместо frame
:
panelR.addMouseListener(new MouseAdapter() {
// ...
и напишите frameMouseClicked как:
void frameMouseClicked(MouseEvent evt) {
points.add(evt.getPoint());
frame.repaint();
}
Внутри paintComponent
вы перебираете список и рисуете все сохраненные местоположения (опять же: очень просто и сокращено, улучшаемо!)
g.setColor(Color.ORANGE);
for (Point point:points) { // <- this is the list of stored points
g.fillRect(point.x, point.y, 10, 10);
}