0

我有一个位于 JButton 顶部的 JLabel,但它不会显示在顶部。当 JButton 的代码被注释掉时,JLabel 就会显示出来,这意味着它在那里但在底部。有没有办法在 JButton 上显示 JLabel?

任何帮助都是极好的。谢谢!

    import java.awt.*;
    import javax.swing.*;

    public class TestingLabelsOverButtons extends JFrame
    {
        public static void main (String []args)
        {   
            new TestingLabelsOverButtons();
        }

        public TestingLabelsOverButtons()
        {
            super();
            setSize(500,500);
            Container c = getContentPane();
            c.setLayout(null);
            c.setBackground(Color.white);

            JButton button = new JButton("Button");
            button.setBounds(0,0,500,500);
            c.add(button);

            JLabel label = new JLabel("Label");
            label.setBounds(0,0,500,500);
            c.add(label);

          setVisible(true);
        }
    }

编辑:

为了澄清起见,我的游戏需要这个,当单击按钮时,JLabel 将显示在按钮顶部以显示添加的“分数”。在我的游戏中,JLabel 将比 JButton 小,因此 JButton 仍然需要可见。

4

1 回答 1

4

根据组件的 ZOrder 绘制组件。基本上,最后添加的组件是首先绘制的。

因此,您可以通过以下方式实现您想要的:

c.add(button);
c.add(label);

虽然,我同意这些评论。你想做什么?可能有更好的解决方案。使用 setBounds() 来定位和调整组件的大小几乎不是一个好主意。

我的游戏需要这个,当单击按钮时,JLabel 将显示在按钮顶部以显示添加的“分数”。

如果您要强制用户单击按钮来显示分数,那么您可能应该使用 aJOptionPane来显示标签。否则标签怎么会消失?强迫用户点击同一个按钮并不是一个很好的 UI。

于 2013-06-12T05:26:55.853 回答