JLabel 与 JFrame 不完全一致

JLabel does not fully allign with JFrame

我有一个 JFrame,上面有一个 JLabel,名为 "coloredLabel",它所在的 class 的一个实例在它们两个上都是 运行。随机数量的对象在框架和标签上四处移动,并且不直接与它们交互。 唯一的问题是标签上方有一些可见的框架,我想要的是标签与框架完全对齐,而不粘贴对象(使用覆盖绘制方法绘制并提到为 "game.newBall" 和 "game.moveBall"。"test" 是 class 的名称。 这是我的主线程的外观,其中声明了框架和标签:

public static void main(String[] args) throws InterruptedException {
    JFrame frame = new JFrame("Bounce 2.0");
    JLabel coloredLabel = new JLabel("");
    test game = new test();
    frame.add(game);
    frame.setSize(300, 400);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    coloredLabel.setOpaque(true);
    coloredLabel.setBackground(game.backgroundColor);
    coloredLabel.setPreferredSize(new Dimension(1000000,1000000));
    frame.getContentPane().add(coloredLabel,BorderLayout.LINE_START);
    game.add(coloredLabel);

    for(int a = randInt(0,9); a<10; a++)
        game.newBall(randInt(0,300),randInt(0,400));

    while (true) {
        double height = frame.getContentPane().getSize().getHeight();
        double width = frame.getContentPane().getSize().getWidth();
        int n = 0;
        while(game.exists(n)==true){
            game.moveBall(n,width,height);
            n++;
        }
        game.repaint();
        Thread.sleep(10);
    }
}

所以我的问题是: 如何将 JLabel 与 JFrame 对齐?所以 JLabel 和框架之间没有 space。

我在此站点上搜索过此问题,但找不到相同的问题或足够相似的问题,因此我无法解决此问题。

The only problem is that there is a bit of the frame visable above the label,

game.add(coloredLabel);

我猜 "game" 是一个 JPanel。默认情况下,JPanel 使用 FlowLayout 并且默认情况下 FlowLayout 具有 5 像素的水平和垂直间隙。

去掉FlowLayout中的空隙。阅读 FlowLayout 的 constructors/methods 的 API 以自定义其行为。

当然,更大的问题是您的应用程序的设计。我不明白你使用标签并试图占据框架的所有 space 的意义。只需使用以下命令设置游戏面板的背景:

game.setBackground(...);

另外 class 名字应该:

  1. 以大写字符开头并且
  2. 具有描述性。

"test" 两者都不是。