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