gpt4 book ai didi

java - getWidth() 对于面板返回 0

转载 作者:行者123 更新时间:2023-11-30 04:29:35 26 4
gpt4 key购买 nike

我希望通过使用 gamePanel 的 getWidth 方法来定位 Racket ,但它返回 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);
}
}

最佳答案

  1. 不要重写 JFrame 的 Paint() 方法。

  2. 您已将 Racket 和球添加到游戏面板中。游戏面板现在将自动绘制这些组件。

  3. 如果您希望能够移动这些组件,则必须将布局设置为 null 并首先设置组件的边界。然后,当您想要移动组件时,只需调用 setLocation() 方法,Swing 就会将组件绘制到新位置。

关于java - getWidth() 对于面板返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com