1

すでにパネル (ボタンの行) を作成し、フレームの下部 (SOUTH) に配置していますが、その下に 2 つの行 (パネル/サブパネル) を追加したいと考えています (テキスト入力行と出力)重要な場合は行)。今私が知っている唯一のことは、パネルを宣言して追加することだけです。これは問題ありませんが、.SOUTH を指定すると、前のパネルの上に移動します。

編集:私が使用したソリューション

Ted Hopp が提案したように、元のパネル (現在は subPanel1 と呼ばれる) と、元のパネルの上にある 2 つの新しいパネル (subPanel2 & subPanel3) を 4 番目の「コンテナー パネル」 (bottomCotainerPanel) に追加しました。subPanel が 3 つしかないので、containerPanel 内で各 subPanel を配置する場所を指定することができました (NORTH、CENTER、SOUTH を使用して、3 つ以上ある場合は少し異なる操作が必要になる可能性があります...)。 contianerPanel はフレーム (SOUTH) に入ります。

    subPanel1.setLayout(new GridLayout(1,6)); //Layout of subPanel1
subPanel1.add(clearButton);
subPanel1.add(customerNameLabel);
subPanel1.add(customerNameTextField);
subPanel1.add(showByNameButton);
subPanel1.add(openNewSavingsButton);
subPanel1.add(openNewCheckingButton);


subPanel2.add(sendChatTextField);
subPanel2.add(sendButton);
subPanel2.add(clearButton2);

subPanel3.add(receiveChatTextField);
subPanel3.add(nextButton);
subPanel3.add(previousButton);

bottomContainerPanel.setLayout(new GridLayout(3,1));   //Layout of Container Panel
bottomContainerPanel.add(subPanel1, BorderLayout.NORTH);
bottomContainerPanel.add(subPanel2, BorderLayout.CENTER);
bottomContainerPanel.add(subPanel3, BorderLayout.SOUTH);

tellerWindow.getContentPane().add(bottomContainerPanel, BorderLayout.SOUTH);
4

3 に答える 3

4

フレームの SOUTH パネルとして単一のコンテナー パネルを追加する必要があります。コンテナー自体には、下部にあるすべてのものに必要なレイアウトが必要です。

于 2012-10-29T17:49:13.573 に答える
2

パネルを南と北で 2 つの等しい部分に分割したいだけの場合は、 を使用しますGridLayout。真ん中に何かが必要な場合は、 を使用できますBorderLayout

ユーザーがサブパネルのサイズを変更できるようにしたい場合は、 を使用しますJSplitPane

于 2012-10-29T17:57:18.563 に答える
0

ListDemo の例から借用したパネルに複数行のボタンを配置しようとすると、同様の問題が発生しました。さて、最初にやるべきことは、次のことを読むことですBorderLayout: BorderLayout の使用方法、または少なくともそこに表示されている画像を参照してください:
ここに画像の説明を入力

に複数の最下行を含めることはできませんBorderLayout。ただし、ネストされたレイアウトを使用できます。必要なのは です。BoxLayout の使用方法をBoxLayout参照してください。
ここに画像の説明を入力

上の画像に表示されているボタンをボタンの行に置き換えるだけです。

public class MyStuff extends JPanel {
  ...
  public MyStuff() {
    super(new BorderLayout());
    ...
    JPanel buttonArea = new JPanel();
    buttonArea.setLayout(new BoxLayout(buttonArea, BoxLayout.PAGE_AXIS));
    add(buttonArea, BorderLayout.PAGE_END);
    ...
    //if you dislike the default center alignment:
    //panelWithButtons1.setAlignmentX(Component.LEFT_ALIGNMENT);
    buttonArea.add(...);// add the 1st panel with buttons
    buttonArea.add(...);// add the 2nd panel with buttons
    buttonArea.add(...);// add the 3rd panel with buttons
于 2015-04-15T08:46:40.490 に答える