Je m'entraîne à tirer une balle dans le tableau et à montrer les coordonnées de la balle lorsque la balle est tirée.Dessinez une balle dans un tableau et déplacez la balle en utilisant mouseDragged
C'est la première fois de pratiquer un exercice de dessin (?)
Ceci est mon code.
import java.awt.*;
import java.awt.event.*;
public class MovingBall extends Frame {
Panel ballPanel = new Panel();
Label ballLabel = new Label();
Panel coordinatePanel = new Panel();
Label coordinateLabel = new Label();
int x0=0,y0 =0, x=20,y=30;
int nowX, nowY;
Label nowXcoordinateLabel = new Label("Now X :"+nowX);
Label nowYcoordinateLabel = new Label("Now Y :"+nowY);
MovingBall(){
setLayout(new GridLayout(1,1));
ballPanel.add(ballLabel); coordinatePanel.add(coordinateLabel);
add(ballPanel);
add(coordinatePanel);
ballPanel.setBackground(Color.white);
coordinatePanel.setBackground(Color.LIGHT_GRAY);
nowXcoordinateLabel.setBackground(Color.WHITE);
nowYcoordinateLabel.setBackground(Color.WHITE);
coordinatePanel.add(nowXcoordinateLabel);
coordinatePanel.add(nowYcoordinateLabel);
setVisible(true);
setSize(400,400);
MouseMotionListener ml = new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
Point p = new Point();
nowX = (int) p.getX();
nowY = (int) p.getY();
}
};
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
dispose();
}
}
);
}
public void paintComponent(Graphics2D gg){
// super.paintComponents(gg);
ballPanel.paintComponents(gg);
gg.setColor(Color.BLUE);
gg.fillOval(x0, y0, 10, 10);
}
public static void main(String[]arg){
MovingBall mb = new MovingBall();
}
}
J'ai deux problèmes
- je
fillOval
etpaintComponent
pour dessiner et afficher une balle, mais je ne vois pas à l'écran. Pourquoi? - Une idée de comment déplacer la balle si je veux déplacer cela en utilisant
mouseDragged
? Ai-je besoin de fil?
vous a tagué cela comme une question Swing donc vous devriez utiliser des composants Swing, pas de composants AWT. Les composants Swing commencent par un «J» (JButton, JPanel ...); Lisez la section du tutoriel Swing sur [Custom Painting]() pour les bases de la peinture. Le code de travail montre comment changer l'emplacement d'un carré sur un événement de souris. Modifiez le code que vous manipulez mouseDragged. – camickr
AWT 'Frame' n'a pas de méthode' paintComponent', ajouter '@ Override' à la méthode, cela créera une erreur de compilation. Ceci aussi, pas comment vous devriez faire la peinture faite sur commande, le «ballPanel» devrait faire le painitng, pas le cadre. Les gens ont cessé d'utiliser AWT il y a plus de 10 ans, vous obtiendriez une meilleure réponse en utilisant Swing ou Java FX – MadProgrammer
Je sais que mouseDragged est faux, mais je l'ai fait juste pour vérifier si mon Label fonctionne ou pas. – ProgramLover