是否可以在另一个JLabel之上添加JLabel?谢谢。
答案 0 :(得分:8)
简短的回答是肯定的,因为JLabel
是Container
,所以它可以接受Component
(JLabel
是Component
的子类)使用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 Managers和A 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 .