gpt4 book ai didi

java - JLabel 与 JFrame 不完全一致

转载 作者:行者123 更新时间:2023-12-01 20:23:58 27 4
gpt4 key购买 nike

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

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 和框架之间没有空间。

我在此网站上搜索了此问题,但找不到相同的问题或足够相似的问题,因此我可以解决此问题。

  • 已解决 - game.setBackground(...);

最佳答案

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

game.add(coloredLabel);

我猜“游戏”是一个 JPanel。默认情况下,JPanel 使用 FlowLayout,并且默认情况下 FlowLayout 的水平和垂直间隙均为 5 像素。

消除FlowLayout中的间隙。阅读 FlowLayout 的构造函数/方法的 API 以自定义其行为。

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

game.setBackground(...);

类名也应该:

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

“test”两者都不是。

关于java - JLabel 与 JFrame 不完全一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44205123/

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