50

グループに 4 つのボタンがありますBoxLayout。これはすべてコードが繰り返されるため、2 つのサンプルにすぎません。各ボタンがぶつからないように、ボタンの間にわずかなスペースを作りたいです。のほぼすべての方法を試しましたが.add(Box.Create....)、何も機能しませんでした。

    enter.add(Box.createVerticalGlue());
    enter.add(Box.createHorizontalGlue()); 
    //enter.add(new JSeparator(SwingConstants.HORIZONTAL));
    JButton float = new JButton("LOWER");
    float.add(Box.createVerticalGlue());
    float.add(Box.createHorizontalGlue());
4

1 に答える 1

92

コンポーネント間にスペースが必要な場合は、一方または両方のコンポーネントに空の境界線を追加するか、非表示のコンポーネントを挿入してスペースを確保できます。Box クラスを使用して、非表示のコンポーネントを作成できます。

すでに接着剤を使用して成功していないので (理由は疑問です)、Rigid areaのようなものを試すことができます。

// Horizontal spacer
container.add(firstComponent);
container.add(Box.createRigidArea(new Dimension(5, 0)));
container.add(secondComponent);

Using Invisible Components as Fillerを見てください。多くのオプションと説明があります。


追加情報、コンポーネント間にスペースを入れることから、

コンテナ内の可視コンポーネント間のスペースの量に影響を与える 3 つの要因:

  • レイアウトマネージャー

    一部のレイアウト マネージャーは、コンポーネント間に自動的にスペースを配置します。他の人はしません。コンポーネント間のスペースの量を指定できるものもあります。間隔のサポートについては、各レイアウト マネージャーのハウツー ページを参照してください。

  • 目に見えないコンポーネント

    ペイントを実行しない軽量コンポーネントを作成できますが、GUI のスペースを占有する可能性があります。多くの場合、 によって制御されるコンテナで非表示のコンポーネントを使用しますBoxLayout。非表示コンポーネントの使用例については、BoxLayout の使用方法を参照してください。

  • 空の境界線

    レイアウト マネージャーが何であれ、空の境界線をコンポーネントに追加することで、コンポーネント間の見た目のスペースに影響を与えることができます。空の境界線の最適な候補は、パネルやラベルなど、通常デフォルトの境界線を持たないコンポーネントです。ペイント コードの実装方法が原因で、一部のルック アンド フィールの実装では、他のコンポーネントが境界線でうまく機能しない場合があります。境界線については、「境界線の使用方法」を参照してください。

于 2011-12-01T03:17:16.400 に答える