gpt4 book ai didi

java - JLabel 没有出现在 JButton 上?

转载 作者:行者123 更新时间:2023-11-30 04:20:56 25 4
gpt4 key购买 nike

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

感谢您的帮助!

<小时/>

图片

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

当 JButtons 设置Visible 为 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);
}

最佳答案

在您的上一篇文章中我说过:

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

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

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

当然我想发帖:

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

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

I don't have a background with glasspanes or anything,

这就是我为您提供教程链接的原因。它包含工作示例。

but I wish to do this in the easiest way possible.

这就是我为您提供教程链接的原因。有时您需要学习基础知识才能利用 Swing 提供的功能。由于您不知道 Swing 的工作原理,因此您也不知道当前方法的缺点。我们试图在设计阶段开始时为您指明正确的方向,以便您将来遇到问题时不必重新审视设计,并且更改会变得更加困难。

关于java - JLabel 没有出现在 JButton 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com