如何在另一个北部的框布局中添加组件,并使它们全部锚定在南部



我尝试制作一个非常迷你游戏。

我有一个JPanel,它使用一个包含三个JLabelBoxLayout.Y_AXIS(jlabels的名称= 1,2,3)我需要该面板内部的一个组件才能锚定在南部(所以我使用胶水)

视图结果将是这样:


1

2

3


然后我有一个JButton。如果用户单击按钮,则JPanel添加了新的JLabel(jlabel = neww的名称)

这是视图结果:


1

2

3

neww


但是我需要这样的东西:


neww

1

2

3


我应该怎么做?

是否可以使用BoxLayout

处理它

这是我尝试过的:

public class help extends JFrame implements ActionListener{
JPanel panel = new JPanel();
JButton insert = new JButton("insert");
JLabel a = new JLabel("1");
JLabel b = new JLabel("2");
JLabel c = new JLabel("3");
public help()  {
    setSize(300, 200);
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(panel, BorderLayout.CENTER);
    panel.setPreferredSize(new Dimension(250,150));
    getContentPane().add(insert, BorderLayout.SOUTH);
    insert.setPreferredSize(new Dimension(50,50));
    insert.addActionListener(this);
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
    panel.add(Box.createVerticalGlue());
    panel.add(a);
    panel.add(b);
    panel.add(c);
    setVisible(true);
}
public static void main (String[]args){
   new help();
}
@Override
public void actionPerformed(ActionEvent e) {
    panel.add(new JLabel("NEW"));
    panel.revalidate();
    panel.repaint();
}

}

非常感谢您的任何帮助!

使用索引参数的add()方法的版本。由于您想在胶水后添加它,请使用1。

panel.add(new JLabel("NEW"), 1);

您可以在BorderLayout.NORTH位置中添加另一个JPanel,然后将其添加到该面板中。您也可以将BoxLayout用于该面板。

注意,无需为您的JFrame设置布局,因为BorderLayout是此容器的默认布局。另外,由于BorderLayout会忽略此面板的首选尺寸,因此毫无意义。

相关内容

  • 没有找到相关文章

最新更新