12

Swing ウィジェットを使用して、パネル内に 2 つのボタンを配置しようとしています。NetBeans IDE 内では、プロパティ ペインでJSeparator borderプロパティが に設定されています。(No border)

それでも線が出る。これは、区切りオブジェクトに期待するものではありません。私は何か間違ったことをしていますか?Delphi と C# WinForms のバックグラウンドを持っているので、Swing には奇妙な点があると思います。しかし、パネル内の 2 つのボタンの間に特定のサイズの透明なギャップを作るにはどうすればよいでしょうか? レイアウトで遊んで、を避ける必要がありJSeparatorますか?

更新:レイアウトを使用し、区切りオブジェクトなしでこれを行うのは簡単です。では、どうやってそれを行うのですか?NetBeans レイアウト カスタマイザとプロパティ インスペクタを調べていますが、それを行う方法が見つかりません。(答え: セパレーターの代わりにインセットを使用したレイアウト。)

4

4 に答える 4

27

Boxクラスの静的ユーティリティ メソッドを確認する必要があります。それらは、目に見えないセパレーターとして機能する固定ストラットの製造に使用できます。例えば

JPanel pnl = new JPanel(new FlowLayout());
pnl.add(new JButton("Hello"));
pnl.add(Box.createHorizontalStrut(10)); // Fixed width invisible separator.
pnl.add(new JButton("Goodbye");

JPanelこれにより、適切な最小、最大、および優先ディメンションを使用して自分で作成/構成するよりもコンパクトなコードが生成されます。

于 2010-06-04T15:32:19.383 に答える
4

JSeparatorコンポーネント間の目に見えるセパレーターとなることを意図しています。

javadocからJSeparator

JSeparator は、区切り線を実装するための汎用コンポーネントを提供します。最も一般的には、メニュー項目を論理グループに分割するメニュー項目間の区切りとして使用されます。

非表示の 2 つのコンポーネントの間にコンポーネントを配置する場合は、JPanel代わりに an を使用します。setPreferedSize()次に、とでパネルのサイズを設定しsetMin/MaxSize()ます。

于 2010-06-04T15:23:36.153 に答える
2

JSeparatorは必要ありません。ほとんどのレイアウトでは、コンポーネント間にギャップ(スペース)を設定できます。また、Boxクラスは特に便利です。

于 2010-06-04T15:28:04.483 に答える
1

高さの値が 1 の addSeparator を使用すると、次のように見えなくなります。

MyJToolBar.addSeparator(new Dimension(20, 1));
于 2015-03-19T23:37:14.103 に答える