Panneaux de peinture en Java
J'essaie donc de peindre plusieurs panneaux en même temps. Tout d'abord, j'ai la classe abstraite dont je cherche à peindre les instances:
public abstract class GameObject extends JComponent implements ActionListener
{
public double x;
public double y;
public double velX;
public double velY;
public Dimension dim;
public abstract void actionPerformed (ActionEvent e);
}
, Puis l'enfant:
public class Ball extends GameObject implements ActionListener
{
public final double DEF_X = 0;
public final double DEF_Y = 0;
public final double DEFAULT_SIZE = 20;
public Timer t = new Timer(5, this);
public Ball (int aVelocity)
{
x = DEF_X;
y = DEF_Y;
velX = aVelocity;
velY = aVelocity;
dim = new Dimension((int) DEFAULT_SIZE, (int) DEFAULT_SIZE);
t.start();
}
public void paintComponent (Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Ellipse2D circle = new Ellipse2D.Double(x, y, dim.getWidth(), dim.getHeight());
g2.fill(circle);
}
public void actionPerformed (ActionEvent e)
{
if (x < 0 || x > 560)
{
velX = -velX;
}
if (y < 0 || y > 360)
{
velY = -velY;
}
x += velX;
y += velY;
repaint();
}
}
Donc, dans le pilote, je veux que 2 instances de balle se déplacent en même temps. Après avoir fait deux balles, j'ai essayé d'ajouter les deux à un JFrame, mais une seule va peindre. J'ai essayé d'ajouter les deux balles à un JPanel p principal, puis j'ai ajouté p à mon JFrame, mais cela n'a peint aucun d'entre eux.
public class Game
{
public static void main(String[] args)
{
JFrame f = new JFrame();
JPanel p = new JPanel();
Ball b1 = new Ball(5);
Ball b2 = new Ball(10);
p.add(b1);
p.add(b2);
f.add(p);
// I also tried just doing f.add(b1) and f.add(b2), but those only display 1 ball.
f.setSize(620, 440);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
f.setLocation(dim.width/2-f.getSize().width/2, dim.height/2-f.getSize().height/2);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
f.setVisible(true);
}
}
Alors que puis-je faire pour remédier à cela et avoir les deux balles peintes en même temps?
0
Author: Andrew Thompson, 2018-03-31