Java 如何让JLabel在JButton上显示?

Java 如何让JLabel在JButton上显示?,java,eclipse,user-interface,jbutton,jlabel,Java,Eclipse,User Interface,Jbutton,Jlabel,我有一个JLabel,它是JButton的ontop,但它不会显示在ontop上。当JButton的代码被注释掉时,会显示JLabel,这意味着它在那里,但在底部。有没有办法显示JButton的JLabel ontop 任何帮助都会很棒。谢谢大家! import java.awt.*; import javax.swing.*; public class TestingLabelsOverButtons extends JFrame { publ

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

任何帮助都会很棒。谢谢大家!

    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仍然需要可见。

根据组件的顺序来绘制组件。基本上,添加的最后一个组件是先绘制的

因此,您可以通过以下方式实现您的目标:

c.add(button);
c.add(label);
尽管如此,我同意这些评论。你想干什么?也许有更好的解决办法。使用setBounds()来定位和调整组件的大小几乎从来都不是一个好主意

我需要在我的游戏中,当按钮被点击时,一个JLabel将显示在按钮的顶部,以显示一个添加的“分数”


如果要强制用户单击按钮以显示分数,则可能需要使用
JOptionPane
来显示标签。否则,标签将如何消失?强制用户单击同一个按钮不是一个很好的UI。

根据组件的顺序来绘制组件。基本上,添加的最后一个组件是先绘制的

因此,您可以通过以下方式实现您的目标:

c.add(button);
c.add(label);
尽管如此,我同意这些评论。你想干什么?也许有更好的解决办法。使用setBounds()来定位和调整组件的大小几乎从来都不是一个好主意

我需要在我的游戏中,当按钮被点击时,一个JLabel将显示在按钮的顶部,以显示一个添加的“分数”


如果要强制用户单击按钮以显示分数,则可能需要使用
JOptionPane
来显示标签。否则,标签将如何消失?强制用户单击同一按钮不是一个很好的UI。

“为什么?”-
JButton
同时支持文本和图标,那么您想要实现什么呢?1)也许这实际上需要一个工具提示。2)
setLayout(空)javagui可能必须在许多平台上工作,在不同的屏幕分辨率上&使用不同的plaf。因此,它们不利于部件的精确放置。为了组织一个健壮的GUI组件,请使用布局管理器或它们的组合,以及空白区域的布局填充和边框。您的方法setBounds()都指向相同的位置。为了澄清,我需要在我的游戏中使用此方法,当单击按钮时,按钮顶部将显示一个JLabel以显示添加的“分数”。在我的游戏中,JLabel将比JButton小,因此JButton仍然需要可见。为什么不“JButton button=newjbutton(“标签”);“?“为什么?”-
JButton
同时支持文本和图标,那么您想要实现什么呢?1)这可能实际上需要工具提示。2)
setLayout(null)
Java GUI可能必须在多个平台上工作,在不同的屏幕分辨率和使用不同的PLAF。因此,它们不利于组件的精确放置。要为一个健壮的GUI组织组件,请使用布局管理器或其组合,以及布局填充和空白边框。您的方法是d setBounds()都指向相同的位置。为了澄清,我需要在我的游戏中使用此按钮,当单击按钮时,按钮顶部会显示一个JLabel,以显示添加的“分数”。在我的游戏中,JLabel将比JButton小一个正方形,因此JButton仍然需要可见。为什么不?”JButton按钮=新JButton(“标签”);“我有一个JPanel,它是一个16个JButel的网格(4个4个)。当需要增加一个分数时,弹出的一个弹出窗口将显示在中间的面板上,显示增加的分数。弹出窗口将显示在中间的4个按钮的顶部,所以我希望它在按钮的顶部是可见的(但是按钮仍然应该被看见)。。即使在按钮后添加标签,我似乎也无法做到这一点。分数更新时会创建弹出窗口,并使用计时器调用不同的方法删除JLabel。与其说是用户必须单击“确定”的选项窗格,不如说是图形更新“。请阅读上的Swing教程。您可以使用玻璃窗格来完成此操作,或者使用JLayeredPane更好。我没有玻璃窗格或任何东西的背景,但我希望以尽可能简单的方式完成此操作。所有这些组件都是位于jframe上的jpanel的一部分。我想在jpanel上的按钮上显示标签。我有一个jpanel,它是由16个JButton(4乘4)组成的网格。当需要添加分数时,弹出窗口将在显示添加的分数的面板的中间。弹出窗口将显示在中间4个按钮的顶部,因此我希望它在按钮顶部可见(但按钮仍应可见)。我似乎无法做到这一点,即使在按钮后添加标签。更新分数时会创建弹出窗口,并使用计时器调用不同的方法删除JLabel。它更像是一个图形更新,而不是用户必须单击“确定”的选项窗格。请阅读上的Swing教程。您可以使用玻璃窗格来完成此操作,或者使用JLayeredPane更好。我没有玻璃窗格或任何东西的背景,但我希望以尽可能简单的方式完成此操作。所有这些组件都是位于jframe上的jpanel的一部分。我想在jpanel上的按钮上显示标签。