0

とてもミニゲームを作ってみました。

私は 1 つ持っており、 3 つ(JLabels の名前 = 1,2,3) を含むJPanela を使用します。南に固定するには、そのパネル内にコンポーネントが必要です (接着剤を使用します)。BoxLayout.Y_AXISJLabel

ビューの結果は次のようになります。


1

2

3


それから私は持っていJButtonます。ユーザーがボタンをクリックすると、新しい(JLabel の名前 = neww)がJPanel追加されます。JLabel

表示結果は次のとおりです。


1

2

3

新しいw


しかし、私はこのようなものが必要です:


新しいw

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ものを追加して、代わりにそのパネルに追加することができます。BoxLayoutそのパネルにも を使用できます。

このコンテナのデフォルト レイアウトとJFrame同様に、 のレイアウトを設定する必要はありません。BorderLayoutまた、パネルの優先サイズを設定してBorderLayoutも無視されるため、意味がありません。

于 2012-10-31T21:37:44.257 に答える