Ceci est ma classe de grenouille qui est appelée par une classe GUI.Rendre un objet dessiné se déplacer de manière aléatoire sur un JPanel
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class Frog implements Runnable {
private int x, y, dx, dy;
private int coordinates[]=new int[2];
private boolean hungry;
private JLabel jLabel;
private ImageIcon image;
private String name;
public Frog() {
}
public Frog(String name, boolean hungry) {
image = new ImageIcon("images/frog.jpeg");
jLabel = new JLabel(image);
setName(name);
setHungry(hungry);
setCoordinates();
}
private void setName(String name) {
this.name=name;
}
public int[] getCoordinates() {
return coordinates;
}
public boolean isHungry() {
return hungry;
}
public void setHungry(boolean hungry) {
this.hungry = hungry;
}
public void display(Graphics paper) {
paper.setColor(Color.black);
paper.drawOval(x, y, dx, dx);
}
public void setCoordinates() {
for(int i = 0; i < 2; i++) {
Random rand = new Random();
int p = rand.nextInt(100);
coordinates[i] = p;
}
setX(coordinates[0]);
setY(coordinates[1]);
}
public void move() {
x = (int)Math.random() * 350;
y = (int)Math.random() * 350;
dx=20;
dx=20;
x += dx;
y += dy;
if (x > 800 || x < 0)
dx=-dx;
if (y > 600 || y < 0)
dy=-dy;
}
public void setDx(int dx) {
this.dx = dx;
}
public void setDy(int dy) {
this.dy = dy;
}
public void setX(int x){
this.x = x;
}
public void setY(int y){
this.y = y;
}
public void run() {
while(!hungry) {
move();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
J'ai créé cette classe pour déplacer un objet de grenouille au hasard, mais quand je l'appelle rien de méthode move
se passe. Je veux que la grenouille sur un JPanel se déplace au hasard sur l'écran. J'ai une autre classe qui utilise l'objet grenouille.
Il est utilisé d'une classe principale contenant les éléments suivants:
public void actionPerformed(ActionEvent event) {
if (event.getSource() == MakePet) {
String petName = namePlace.getText();
frog = new Frog(petName,false);
panel.add(pet);
panel.add(prey);
frog.move();
Thread fro = new Thread(frog);
fro.start();
}
}
public static void main(String[] args) {
GUI demo = new GUI();
demo.setSize(520,720);
demo.createGUI();
demo.show();
}
Je ne peux pas voir où la grenouille est réellement dessinée. La fonction move() modifie les variables x et y, mais celles-ci ne sont utilisées que pour dessiner un ovale. –
Pourriez-vous poster le code de l'interface graphique, ou au moins des extraits pertinents? Surtout d'où vient l'appel? Aussi, vouliez-vous utiliser 'dy' pour la hauteur de l'ovale? – Sardtok
Cela ressemble à une copie de [cette question] (http://stackoverflow.com/questions/28928256/randomly-moving-images-on-a-jpanel?rq=1) –