1
我想要使用getParent方法为gamePanel定位球拍,但它返回0.它对框架工作正常,并且它也适用于面板,但我决定重写很多代码,现在我无法让它工作。帮助表示赞赏:)getWidth()返回0为面板
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Oppgave1 extends JFrame {
public static void main(String[] args) {
JFrame frame = new Oppgave1();
frame.setTitle("Oppgave 1");
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private JLabel jlbBallCount = new JLabel("Ballcount");
private JLabel jlbTimer = new JLabel("Timer");
private JButton jbtNewBall = new JButton("New Ball");
private Racket racket;
private Ball ball;
public Oppgave1() {
JPanel buttonPanel = new JPanel();
buttonPanel.add(jlbBallCount);
buttonPanel.add(jlbTimer);
buttonPanel.add(jbtNewBall);
JPanel gamePanel = new JPanel();
gamePanel.add(racket = new Racket (100, 60));
gamePanel.add(ball = new Ball(10, 3, racket));
this.add(gamePanel, BorderLayout.CENTER);
this.add(buttonPanel, BorderLayout.SOUTH);
}
public void paint(Graphics g){
racket.draw(g);
ball.draw(g);
}
}
你在哪里调用'getWidth()'? – 2013-02-21 01:54:22
@ Code-Guru我只是想知道同样的事情。我还想知道为什么***需要知道面板的大小。依靠布局管理器,它通常变得无关紧要。 – 2013-02-21 01:55:40
@AndrewThompson看起来这可能是一款游戏。使用通常需要的自定义绘画,获取组件的大小当然可能有用。当然,一个复杂的解决方案会将这些细节隐藏在适当的线性变换中。 – 2013-02-21 01:58:17