JLabel在另一个JLabel之上

时间:2009-10-03 08:21:35

标签: java swing jlabel

是否可以在另一个JLabel之上添加JLabel?谢谢。

5 个答案:

答案 0 :(得分:8)

简短的回答是肯定的,因为JLabelContainer,所以它可以接受ComponentJLabelComponent的子类)使用add方法添加到JLabel

JLabel outsideLabel = new JLabel("Hello");
JLabel insideLabel = new JLabel("World");
outsideLabel.add(insideLabel);

在上面的代码中,insideLabel已添加到outsideLabel

但是,在视觉上,显示带有“Hello”文本的标签,因此无法真正看到标签中包含的标签。

因此,问题在于通过在另一个标签上添加标签来实现真正想要实现的目标。


修改

来自评论:

  好吧,我想做的是第一次,   从文件中读取某个分数,   然后在a中显示该分数   JLabel的。我想到的是什么   然后将分数分成3个部分   为三者中的每一个使用标签。   然后第二,我希望能够拖动   分数,所以我认为我可以使用   另一个jlabel,放置3'mini   jlabels'在大jlabel上。我不   知道这是否会起作用..:|

听起来应该研究如何在Java中使用布局管理器。

一个好的起点是Using Layout ManagersA Visual Guide to Layout Managers,来自The Java Tutorials

听起来GridLayout可能是完成任务的一种选择。

JPanel p = new JPanel(new GridLayout(0, 1));
p.add(new JLabel("One"));
p.add(new JLabel("Two"));
p.add(new JLabel("Three"));

在上面的示例中,JPanel使用GridLayout作为布局管理器,并被告知要排成一行JLabel

答案 1 :(得分:1)

原始问题的答案是肯定的,因为任何组件都可以添加到容器中。

您没有看到第二个标签的原因是因为默认情况下JLabel使用空布局管理器,第二个标签的大小为(0,0),因此无需绘制任何内容。因此,您需要做的就是设置第二个标签的边界,然后离开。

如果要拖动组件,则无法使用布局管理器,因为只要调整框架等,就会调用布局管理器,并根据组件的布局管理器重新定位组件。 / p>

答案 2 :(得分:0)

这是一个布局问题。 您可以使用空布局(带有硬编码位置)或自定义布局来实现。

答案 3 :(得分:0)

您可以使用JLayeredPane并将其边框设置为无边框。

答案 4 :(得分:0)

你可以通过使用水平或垂直间隙(hgap,vgap)布局的属性将它们添加到彼此之上 JPanel p = new JPanel(new GridLayout(2, 1,-40,0)); //the 40 is the hgap , make it the same with the label height .