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

标签 java swing jframe jpanel

我希望通过使用 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/

相关文章:

java - OptionTag 类型中的 setValue(String) 方法不适用于参数 (Object)

java - 在 html 中嵌入 java swing

java - 为什么JFrame上有背景图片的按钮无法正常显示

java - 设置包含 JRadioButton 的 JPanel 的大小

java - 在 JFrame Java 上在图像上方追踪一条线

java - ucanaccess 驱动程序是否处理多个并发 java 应用程序?

java - JSONArray 中的唯一 JSONObject

java - Maven 远程资源插件未创建 remote-resources.xml list 文件

java - 如何从连接三个表的 Derby 数据库获取聚合和列数据

java - java 中的 mouseclicked 事件无法填充文本字段