Вопрос по Java. Помогите с программой.
Здравствуйте. Вопрос по программе из курса Java. Быстрый старт. Я её упростил. Теперь капля падает только по клику мыши из точки клика. Но с появлением новой капли старая капля пропадает. Это понятно из алгоритма программы. А как сделать так, чтобы с появлением новой капли старая капля продолжала движение. Какой метод применить? Думаю нужно как-то копировать графический объект, или создавать с каждым кликом новый? Пробовал сам покопаться в Java в Graphics, Panel, пробовал применить метод create(), но ничего не получилось. Может что подскажете? Могу выслать папку с программой. Её можно открыть в IntelliJ IDEA.
package ru.geekbrains.window_app2;
import javax.imageio.ImageIO;
import javax.swing.;
import java.awt.;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
public class GameWindow extends JFrame {
private static GameWindow game_window;
private static Image background;
private static Image drop;
private static int x;
private static int y;
private static float drop_left = 200;
private static float drop_top = -100;
private static boolean isClick = false;
public static void main(String[] args) throws IOException {
background = ImageIO.read(GameWindow.class.getResourceAsStream("background.png"));
drop = ImageIO.read(GameWindow.class.getResourceAsStream("drop.png"));
game_window=new GameWindow();
game_window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
game_window.setLocation(200,100);
game_window.setSize(906,478);
game_window.setResizable(false);
GameField game_field = new GameField();
game_field.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
drop_top = y;
isClick = true;
}
});
game_window.add(game_field);
game_window.setVisible(true);
}
private static void onRepaint(Graphics g) {
g.drawImage(background, 0, 0, null);
drop_left = x-(drop.getWidth(null))/2;
if(isClick) {
g.drawImage(drop, (int) (drop_left), (int) (drop_top), null);
drop_top = drop_top + 0.3f;
}
}
private static class GameField extends JPanel{
@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
onRepaint(g);
repaint();
}
}
}