我看到很多问题看起来像我的,我已经查看了所有的答案,但我似乎无法找到我需要的答案。
我正在制作一个Paddle
课程和一个Ball
课程。
在Ball类中,我有一个绘制和移动球的绘制方法。在我的Paddle课程中,我有一个绘制和移动球拍的绘画方法。在我的主要课程中,我有一个JFrame。
我想把我的球和桨类添加到我的 JFrame,但JFrame仅显示最后添加的类。我已经尝试将我的类添加到JPanel,然后将JPanel添加到JFrame,但这也不起作用。
下面显示的代码没有错误(我可能打错了)但只是在JFrame上显示了paddle。 (当我将球拍添加到框架后将球添加到框架中时,反之亦然)。我真的很感激任何答案!
public class game {
JFrame frame = new JFrame();
//set size and visibility and all the other things
Ball ball = new Ball();
frame.add(ball);
Paddle paddle = new Paddle();
frame.add(paddle);
//repeats code underneath every 10 milliseconds using swing timer
ball.revalidate();
ball.repaint();
paddle.revalidate();
paddle.repaint();
}
我的球类中的绘画方法如下所示:
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillOval(ballx, bally, balldiamter, balldiamter);
}
我的paddle类中的paint方法如下所示:
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillRect(paddlex, paddley, paddleLength, paddleWidth);
}
答案 0 :(得分:-2)
您应该制作一个可以更好地控制的自定义框架。
class MyFrame extends JFrame{
MyFrame(String s){
super(s);
Ball ball = new Ball();
add(ball);
Paddle paddle = new Paddle();
add(paddle);
setBounds(0, 0, SCREEN_HEIGHT, SCREEN_WIDTH);
setVisible(true);
}
public void paint(Graphics g){
ball.paint(g);
paddle.paint(g);
}
}
这可以使球更容易画球和划桨。另外,Ball和Paddle需要extends JPanel
,他们需要有这样的绘制方法:
public void paint(Graphics g){
g.drawRect(...); // your logic
}
另外,也许你自己的绘画方法有一些问题。