Мне было интересно, если вы могли бы помочь мне определить, что случилось с моим кодом, мне в основном нужно сгенерировать мяч в точке из mouseclick, но по какой-то причине его не работает. Мне удалось получить мяч, заполняемый только по умолчанию. Я тратил межсезонья часами и честно не могу понять, что случилось, любая помощь очень ценится, спасибо заранее.Ошибка при создании объекта в точке mouseclick, не может обнаружить ошибку в коде вообще, любая помощь оценивается
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.util.Random;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class Game extends JPanel implements MouseListener{
int x = 0;
int y = 0;
int xvel = 1;
int yvel =1;
//code to generate a random colour for the balls
Random rand = new Random();
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
Color randomColor = new Color(r, g, b);
private void moveBall() {
if (x + xvel < 0)
xvel = 1;
if (x + xvel > getWidth() - 30)
xvel = -1;
if (y + yvel < 0)
yvel = 1;
if (y + yvel > getHeight() - 30)
yvel = -1;
x = x + xvel;
y = y + yvel;
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
x = this.getX();
y = this.getY();
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(randomColor);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.fillOval(x, y, 30, 30);
}
public static void main(String[] args) throws InterruptedException {
JFrame frame = new JFrame("BallProject");
Game game = new Game();
frame.add(game);
frame.setSize(300, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
while (true) {
game.moveBall();
game.repaint();
Thread.sleep(10);
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}