JLabel没出现在JButton上面?

时间:2013-06-12 05:49:24

标签: java swing jbutton jlabel absolutelayout

我有一个16个按钮的网格,代表骰子。添加分数后,我希望JLabel在中间弹出并显示添加的分数。 16个按钮和一个标签都在一个JLabel中。为什么按钮总是显示在JLabel的顶部,即使JLabel设置为可见?

感谢您的帮助!


图片

JButtons可见,JLabel不是:
http://i.stack.imgur.com/0r5h2.png

当JButtons的setVisible为false时,可以看到JLabel:
http://i.stack.imgur.com/cLqZB.png


代码

这是我的代码的构造函数。如果按钮可见,则标签不会显示。

        public Grid()
        {
            super();
            setLayout(null);
            setBounds(125,205,290,290);
            setBackground(new Color(139,69,19));
            setBorder(new LineBorder(Color.black,5));

            for(int a = 0; a < piece.length; a ++)
            {
                for(int b = 0; b < piece[0].length; b ++)
                {
                    piece[a][b] = new DiceButton(0,0,a,b,null);
                    piece[a][b].addActionListener(this);
                    add(piece[a][b]);
                }
            }

            scoringVisual = new JLabel("+ 200");
            scoringVisual.setBounds(110, 135, 70, 30);
            scoringVisual.setFont(new Font("Arial Rounded MT Bold", Font.BOLD, 20));
            scoringVisual.setOpaque(true);
            scoringVisual.setBackground(new Color(0,87,0));
            scoringVisual.setForeground(new Color(38,224,2));
            scoringVisual.setHorizontalAlignment(JLabel.CENTER);
            scoringVisual.setBorder(new LineBorder(Color.black,1));
            add(scoringVisual);
        }

1 个答案:

答案 0 :(得分:2)

在你上次的帖子中我说:

基本上,添加的最后一个组件首先被绘制。

然而,我随后发布了示例代码(与您的代码相同):

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

当然我打算发帖:

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

当然,这仍然是一种做你想要的糟糕方式。您不应该使用null布局。您不应该使用setBounds()将组件放置在面板上。

  

我没有玻璃窗或其他任何背景,

这就是为什么我给你链接到教程。它包含工作的exmaples。

  

但我希望以最简单的方式做到这一点。

这就是为什么我给你链接到教程。有时您需要学习基础知识才能利用Swing提供的功能。由于你不知道Swing是如何工作的,所以你不知道当前方法的缺点。我们正试图在您的设计阶段开始时向您指出正确的方向,以便您在遇到问题时不必再重新考虑设计,并且变得更难。