【发布时间】:2013-04-04 15:42:44
【问题描述】:
作为项目的一部分,我们必须有 9 个盒子,在这里我刚刚实现了交替颜色作为示例来代替我们应该使用的图像。但是,虽然我希望这 9 个 JLabels 在此网格 layout (3,3) 中,但我还希望在顶部有一条消息(JLabel),我可以集中起来,比如欢迎消息以及大约四个 @987654324 @下面?有人可以为我指出如何实现这一目标的正确方向吗?
谢谢!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class HomeController extends JPanel implements MouseListener
{
HomeController()
{
setLayout(new GridLayout(3,3));
JLabel apl1 = new JLabel("");
apl1.setBackground(Color.WHITE);
apl1.setOpaque(true);
this.add(apl1);
JLabel apl2 = new JLabel("");
apl2.setBackground(Color.BLACK);
apl2.setOpaque(true);
this.add(apl2);
JLabel apl3 = new JLabel("");
apl3.setBackground(Color.WHITE);
apl3.setOpaque(true);
this.add(apl3);
JLabel apl4 = new JLabel("");
apl4.setBackground(Color.BLACK);
apl4.setOpaque(true);
this.add(apl4);
JLabel apl5 = new JLabel("");
apl5.setBackground(Color.WHITE);
apl5.setOpaque(true);
this.add(apl5);
JLabel apl6 = new JLabel("");
apl6.setBackground(Color.BLACK);
apl6.setOpaque(true);
this.add(apl6);
JLabel apl7 = new JLabel("");
apl7.setBackground(Color.WHITE);
apl7.setOpaque(true);
this.add(apl7);
JLabel apl8 = new JLabel("");
apl8.setBackground(Color.BLACK);
apl8.setOpaque(true);
this.add(apl8);
JLabel apl9 = new JLabel("");
apl9.setBackground(Color.WHITE);
apl9.setOpaque(true);
this.add(apl9);
JLabel message = new JLabel("hello world");
this.add(message);
}
}
【问题讨论】:
-
你能用任何图片向我们展示它目前的样子以及你想要它吗?
-
呃,目前它有一个 3 x 3 的网格,每个正方形在黑色和白色之间交替。我希望它有那个,但上面有一个标签,下面有一个按钮
-
我的建议是创建 9 个 Jpanel 并使用 Boxlayout 或 cardlayout 添加您的组件(jlable 和 jbutton)。完成后,使用 gridlayout 将这 9 个 jpanel 添加到 3x3 网格中。
-
要扩展 Smit 的评论,您可以在面板中嵌入面板,在布局中嵌入布局。您可以混合搭配以获得您想要的结果。您可能有一个 2x1 Gridlayout,第 1 行带有顶部标签,第 2 行有一个单独的面板,其中包含 3x3 gridlayout。
标签: java swing layout jpanel layout-manager