gpt4 book ai didi

java - 标签数组的最后一个标签定位错误

转载 作者:行者123 更新时间:2023-12-01 18:17:53 24 4
gpt4 key购买 nike

我正在尝试使用 swing 在 Java 中创建一个二进制时钟。我一开始就遇到了一个问题,标签数组的最后一个元素总是出现在 0 x 轴位置和 y 轴中间。

我不想使用任何布局管理器,因为我希望面板上有一些圆形图像。

这是我到目前为止的代码:

import javax.swing.*;

@SuppressWarnings("serial")
public class MainFrame extends JFrame {

public MainFrame()
{
setLayout(null);
JFrame frame = new JFrame("Binary Clock");
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(600,400);
frame.setResizable(false);

JLabel label[] = new JLabel[5];
for(int i = 0; i < 5; i++)
{
label[i] = new JLabel();
label[i].setLocation(i * 10, i * 10);
label[i].setSize(30, 10);
label[i].setText("TEST");
frame.add(label[i]);
}
}

public static void main(String[] args)
{
new MainFrame();
}
}

我在这里发现了类似的问题:

setLocation of Label

但是没有答案如何在没有布局管理器的情况下做到这一点。

我尝试过调整大小之类的东西,但只有 setText() 可以做任何改变,除此之外没有任何作用。

谢谢!

最佳答案

Pshemo 的答案提供了为什么添加最后一个标签后会出现奇怪行为的答案,但我也用一些增强功能标记了代码。

  1. 删除extends JFrame,这很少是一个好主意,并且您已经了解了为什么在 JFrame 的类中使用 JFrame 的实例可以原因...

  2. 将框架实例的布局设置为您原来的 null(而不是 this)。注意:使用布局管理器是创建 Swing UI 的首选方法,通常不鼓励将其设置为 null

  3. 您不需要标签数组(除非您打算稍后使用它们),您只需使用循环即可添加您想要的内容。

  4. 使框架最后可见

那么你有:

import javax.swing.*;

@SuppressWarnings("serial")
public class MainFrame {

public MainFrame()
{
JFrame frame = new JFrame("Binary Clock");
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,400);
frame.setResizable(false);

for(int i = 0; i < 5; i++)
{
JLabel label = new JLabel();
label.setLocation(i * 10, i * 10);
label.setSize(30, 10);
label.setText("TEST");
frame.add(label);
}

frame.setVisible(true);
}

public static void main(String[] args)
{
new MainFrame();
}
}

关于java - 标签数组的最后一个标签定位错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28548112/

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