0

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

我有一个JPanel,它使用一个BoxLayout.Y_AXIS包含三个JLabel(JLabels 的名称 = 1,2,3)我需要该面板内的一个组件来锚定在 South(所以我使用胶水)

视图结果将是这样的:


1

2

3


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

这是查看结果:


1

2

3

新世界


但我需要这样的东西:


新世界

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();
}

}

非常感谢您的任何帮助!

4

2 回答 2

4

有一个add()使用索引参数的方法版本。由于要在胶水后添加,请使用 1。

panel.add(new JLabel("NEW"), 1);
于 2012-10-31T21:46:16.607 回答
1

JPanel您可以在该位置添加另一个BorderLayout.NORTH并添加到该面板。您也可以将 aBoxLayout用于该面板。

请注意,无需为您的 设置布局JFrame,因为BorderLayout这是该容器的默认布局。此外,没有必要设置面板​​的首选尺寸,因为BorderLayout会忽略这一点。

于 2012-10-31T21:37:44.257 回答